C 2Dimensionales Array string

broms

Newbie
Registriert
März 2018
Beiträge
2
Hallo!

Ich bin noch Anfänger in C :)
Momentan versuche ich mehrere Wörter "beliebiger" länge in einem Array zu speichern (ich hab mir mal als grenze 100 gesetzt)
Wenn ich einen text eingebe soll die Funktion die einzelnen Wörter einspeichern
.. leider klappt das ganze nicht so richtig :/ das einzige was wirklich gespeichert wird ist der erste Buchstabe des ersten Wort :/
Hat jemand vielleicht einen Tipp wie ich es besser hinkriegen könnte? :/


char text[100];
puts("geben sie einen text ein: ");
fgets(text, 100, stdin);


char wort[100][100]

int i = 0;
int j = 0;
while(i<strlen(text)){
if(text!= ' ' && text != '\0'){
wort[j]=text;
}
j++;
i++;
}
 
Du inkrementierst j und i in gleicher Weise. Ich denke j sollte nach einen else stehen.

Alternative: Du musst die strings nicht unbedingt kopieren. Bei Whitespace in text einfach diesen durch ein \0 ersetzen und ggf. Zeiger auf das nächste Zeichen in einem char*-Array speichern, am besten noch einen Zähler inkrementieren zum Wörter zählen. Verstanden? :evillol: Bring erstmal deins zum Laufen, optimieren kann man ja später.
 
char wort[100][100];
int i = 0;
int j = 0;
int x=0;
char text[100];

puts("geben sie einen text ein: ");
fgets(text, 100, stdin);

for(i=0;i<strlen(text);i++) {
if (text== ' ') {x=0;j++;continue;}
if (text == '\0') break; // Ende
wort[j][x++]=text;
}
 
Zuletzt bearbeitet:
DaZpoon schrieb:
Du inkrementierst j und i in gleicher Weise. Ich denke j sollte nach einen else stehen.

Alternative: Du musst die strings nicht unbedingt kopieren. Bei Whitespace in text einfach diesen durch ein \0 ersetzen und ggf. Zeiger auf das nächste Zeichen in einem char*-Array speichern, am besten noch einen Zähler inkrementieren zum Wörter zählen. Verstanden? :evillol: Bring erstmal deins zum Laufen, optimieren kann man ja später.

danke! ich habe jetzt nach der if abfrage noch ne else gemacht und j um eins erhöht. Das erste wort wird jetzt schon eingespeichert :)
die darauf folgenden wörter jedoch nicht mehr.. :( Ich habe auch versucht bei einer leerzeile wort[j] = '\0' zu machen jedoch wurde mir da immer eine fehlermeldung ausgegeben :o
 
Dein Fehler ist wort[j]=text; Die beiden i passen nur für das erste Wort!
 
Zurück
Oben