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


Anmelden zum Antworten