Problem mit Verkette Liste



  • Hallo alle zusammen,

    Also ich bin grad dabei die verketteten listen zu verstehen, und habe ein kleines programm geschrieben, welches einfach einen namen und ein alter in eine struktur hineinschreibt.
    Ich bekomme jedoch an der zeile

    sprintf((pPointer->name),"%s",ausgabename);
    

    einen Fehler???-> Segmentation Fault
    Wo lieht das Problem??
    Hier der code

    [code]
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    int ausgabe(char ausgabename[100],int ausgabealter);

    struct stars
    {
    char name[100];
    int alter;
    struct stars *pNext;
    };

    struct stars *pHead;

    int main(void)
    {
    char vollname[100];
    int vollalter=0;

    pHead=NULL;
    while(1)
    {
    printf("Name des Stars: ");
    gets(vollname);
    printf("\nAlter des Stars: ");
    scanf("%d",&vollalter);
    ausgabe(vollname,vollalter);
    }
    return 0;
    }

    int ausgabe(char ausgabename[100],int ausgabealter)
    {
    struct stars *pPointer;
    if(pHead==NULL)
    {
    pHead=malloc(sizeof(struct stars));
    if(pHead==NULL)
    {
    printf("Kein Speicher mehr zur verfuegung\n\n");
    exit(EXIT_FAILURE);
    }
    sprintf((pPointer->name),"%s",ausgabename);
    pPointer->alter=ausgabealter;
    }
    return 0;
    }
    [code]



  • Du bringst pHead und pPointer durcheinander.

    Achte auf Compilerwarnungen.

    int ausgabe(char ausgabename[100],int ausgabealter)
    {
      struct stars *pPointer;
      if(pHead==NULL)
      {
        pHead=malloc(sizeof(struct stars));
        if(pHead==NULL)
        {
          printf("Kein Speicher mehr zur verfuegung\n\n");
          exit(EXIT_FAILURE);
        }
        sprintf((pPointer->name),"%s",ausgabename);  //  :warning: Compilerwarnung pPointer nicht initialisiert
        pPointer->alter=ausgabealter;
      }
      return 0;
    }
    


  • Aber der pPointer zeigt auf die Struktur stars, wieso ist der uninitialisiert, ich müsste doch eigentlich durch den pPointer auf die Struktur zugreifen können, oder???

    struct stars 
    { 
      char name[100]; 
      int alter; 
      struct stars *pNext; 
    }; 
    struct stars *pPointer;
    


  • Der Pointer zeigt aber auf nichts.



  • transcend schrieb:

    Aber der pPointer zeigt auf die Struktur stars

    Wo wird dem Zeiger pPointer ein Wert zugewiesen?


Anmelden zum Antworten