Strings in eine Liste lesen
-
Sers, bin relativ neu auf dem gebiet der programmiersprachen und da passieren halt noch fehler. auch solche die man net findet. kann mir einer sagen was hier nicht geht?
#include <stdlib.h> #include <stdio.h> #include <string.h> main(){ struct element{ struct element *next; char *zeichenkette; }; char z[30]; struct element *k, *start=NULL, *lauf=NULL; while(!feof(stdin)){ if ((fgets(z,sizeof(z),stdin)) != NULL){ k = (struct element*)malloc(strlen(z)+1); k->zeichenkette=z; k->next=NULL; if(start==NULL) { start=k; lauf=k; }else { lauf->next=k; lauf=k; } } } lauf=start; while (lauf!=NULL){ fputs(lauf->zeichenkette, stdout); lauf=lauf->next; } }
ich bekomm immer nur die das letzte wort ausgegeben. also wenn ich 3 wörter eingeb, dann gibt der mir 3 mal das letzte wort aus. seh den fehler einfach net. pls help
-
Das Element 'zeichenkette' aller Knoten in deiner Liste zeigen auf z und somit wird immer das letzte gelesene Wort ausgegeben. Deklariere 'zeichenkette' als ein char-Array und verwendet strcpy/memcpy