Segmentation Fault



  • In diesem Programmabschnitt bekomme ich immer einen Segmentation Fault, klammere ich diese Zeile aus kommt er nicht:

    strncpy(str2,name[groups[i][0]],8);
    

    Das Programm soll aus einem Array, in dem Namen mehrfach vorkommen können diese zusammenfassen und zählen.
    Bsp:

    ar[0]=bernd;
    ar[1]=alex;
    ar[2]=bernd;
    Ausgabe:
    alex 1
    bernd 2

    Das Kuriose an der Sache ist es ging bereits und ich hab keine Ahnung warum es jetzt auf einmal nicht mehr geht und wieso ich da nen Segmentation Fault bekomme.
    Vllt. sieht ja jem den Fehler.
    Gruß HiFish

    if(group==1)
            {
    
                    int groups[100][2];
                    int i=0,l=0;
                    char str2[9];
                    char str[9];
    
                    groups[0][0]=0;
    
                    while(cnt>x)
                    {
                            strncpy(str,name[x],8);                         //Name aus org Array holen
                            while(i<100)
                            {
                                    if(groups[i][0]!=0)
                                    {
                                            strncpy(str2,name[groups[i][0]],8);     //Bereits vorhandene Namen rausholen und
    
                                            if(strstr(str,str2)!=0)                 //Überprüfen ob es den Namen schon gibt
                                            {
                                                    groups[i][1]++;                 //wenn ja die Anzahl erhöhen
                                                    i=200;
                                            }
                                    }
                                    i++;
                            }
                            if(i==100)                                      //wurde kein Name gefunden
                            {
                                    groups[l][0]=x;                         //neuen Eintrag anlegen
                                    l++;
                            }
                            i=0;
                            x++;
                    }
                    for(i=0;i<l;i++)
                    {
                            strncpy(str,name[groups[i][0]],8);
                            k=groups[i][1]+1;
    
                            printf("%s:",str);
                            printf("%d Jobs\n",k);
                     }
    }
    


  • Wie ist denn name definiert? Und kannst du mal im Debugger nachschauen, woher du deine Daten holen willst.

    (ich tippe persönlich auf Probleme wegen nicht-initialisierter Variablen, besonders groups enthält am Anfang willkürliche Werte)



  • Ja an dem Groups lag es, ich definiere es jetzt mit:

    for(i=0;i<100;i++)
                    {
                            groups[i][1]=0;
                            groups[i][0]=0;
                    }
    

    gibt es da auch einen einfacheren Weg?
    Aber danke schonmal für die Hilfe,
    Gruß HiFish



  • Ja, Initialisierungsliste:

    int groups[100][2]={0};
    

Anmelden zum Antworten