String Gesperrt ausgeben
-
Programm sollte so laufen ..
Eingabe: hallo
Ausgabe h a l l ojeweils ein blank eingefügt werden
..
hier mein code
int main() { char string [40]; char gesperrt [40]; int i=0; int j=0; int k=0; int l=0; scanf("%s", string); while(string[i] != '\0') { i = i + 1; } i = i - 1; i = i * 2; for(j=0;j<=i;j++) { gesperrt[k] = string[l]; l = l + 2; k = k + 1; gesperrt[k] = ' '; } gesperrt[j] = '\0'; printf("%s",gesperrt); return 0; }
-
Irgendwie laufen deine Indexzähler l und k falsch.
gesperrt sollte doppelt so groß sein wie string.
Und warum
i = i - 1;
undi = i * 2;
-
iShizzle schrieb:
#include <stdio.h> int main() { int i = 0; char string [40]; scanf("%s", string); while(string[i]) printf("%c ", string[i++]); return 0; }
-
#define MAX_INP_SIZE 40 #define MAX_OUT_SIZE MAX_INP_SIZE * 2 int main() { char string [MAX_INP_SIZE]; char gesperrt [MAX_OUT_SIZE]; int i=0; int j=0; scanf("%s", string); for (i = 0, j = 0; string[i]; i++, j++) { gesperrt[j++] = string[i]; gesperrt[j] = ' '; } gesperrt[j-1] = '\0'; printf("\n%s\n", gesperrt); printf("Eingabe: %s (%d Zeichen)\n", string, i); printf("Ausgabe: %s (%d Zeichen)\n", gesperrt, j); return 0; }
Kein schöner Code, aber sollte in ungefähr das tun, was Du vorhattest.
-
da ich erst noch c lerne .. und mir zwar denken kannst was du mit
#define MAX_INP_SIZE 40 [MAX_INP_SIZE];
meinst, darf ich es trotzdem noch nicht verwenden, wir haben grade erst angefangen mit arrays.
ich darf nur das verwenden was ich im prog hab, auch kein strcpy..
... das müsste (meiner meinung nach) gehen .. tuts aber nicht
#include <stdio.h> #include <stdlib.h> int main() { char string [40]; char gesperrt [40]; int i=0; int j=0; int o=0; scanf("%s", string); while(string[i] != '\0') { i = i + 1; } i = i - 1; for(;j<i;j++) { gesperrt[o] = string[j]; // Im Speicher [0] = [0] | 2 = 1 | 4 = 2 .... o = o + 1; // an die Stelle 1 ... gesperrt[o] = ' '; // ... der blank o = o + 1; // Im Speicher [2] } gesperrt[o] = '\0'; printf("%s",gesperrt); return 0; }
-
"tus aber nicht" ist auch nicht unbedingt hilfreich als Fehlerbeschreibung
Das Prinzip ist schon okay so. Dein kleines logisches Problem ist, dass Du mit dem '\0' den letzten Buchstaben Deines gesperrt überschreibst.
Ansonsten hast Du nach wie vor den "Denkfehler", dass gesperrt nicht genug Platz bietet für 39*(Buchstabe_von_string+Leerzeichen) ...
-
das mit der größe sollte kein problem bei hallo sein...
ich wäre fürs erste froh wenn er mir h a l l o ausgibt
EDIT:
es geht !an alle die es wissen wollen ..
#include <stdio.h> #include <stdlib.h> int main() { char string [40]; char gesperrt [40]; int i=0; int j=0; int o=0; scanf("%s", string); while(string[i] != '\0') { i = i + 1; } i = i - 1; for(;j<=i;j++) { gesperrt[o] = string[j]; // Im Speicher [0] = [0] | 2 = 1 | 4 = 2 .... o = o + 1; // an die Stelle 1 ... gesperrt[o] = ' '; // ... der blank o = o + 1; // Im Speicher [2] } gesperrt[o] = '\0'; printf("%s",gesperrt); return 0; }
-
Wenn du das
i = i-1
weg lässt und für dann im forj<i
(statt j<=i) schreibst sieht es noch besser aus.
-
ja stimmt, danke!