Segementation Fault?!?



  • Hi,
    Die Funktion verursacht einen Segmentation Fault, ich hab mir schon ein paar Stunden den Kopf zerbrochen aber komm nicht drauf warum.
    Das faszinierende ist der Seg. Fault tritt nur auf wenn ich "string2[9]" nicht deklariere, deklariere ich eben diesen läuft die Funktion durch, allerdings schreibt er bei den ersten 40-50 Gruppen einen Nullpointer in group.

    Was auch noch komisch ist, ist das ich dieselbe Methode nur für ein Array von Namen schon habe, die läuft ohne Probleme. ( Ich hab lediglich die for schleife un das "aus dem 2-dim array in den string kopieren" entfernt, bei Bedarf kann ich die andere Funktion auch mal posten).

    Nunja irgendwie komm ich net weiter,wäre für Hilfe sehr dankbar.
    Gruß HiFish

    void new_gg(char name[9],char group[9])      
    {                                                               
            FILE *fp;
            char zeile[200],string[9],string2[9];// <--- 
            int abort=0,i=0,j=0;
            fp=fopen("passwd.backup","r");                 
    
            while(!feof(fp)&&!abort)
            {
                    fgets(zeile,200,fp);                            
    test("sfsaf");
                    sscanf(zeile,"%[^:]%s",string);   //Hier passiert der Seg Fault                
    test("u");
                    if(strstr(string,name))                         
                    {
                            sscanf(zeile,"%*[^:]:x:%*d:%d",&abort); 
                            switch(abort)                                           
                            {
                                    case 750:        strcpy(group,"IWR");
                                                     break;
                                                     ...
                                     default:        strcpy(group,"none");
                                                     exit;
                            }
                    }
            }
            fclose(fp);                            }
    


  • Dein sscanf liest 2 strings du übergibst aber nur einen als parameter
    so sollte es gehen wenn du wirklich alle zeichen bis zun ':' überspringen willst

    sscanf(zeile,"%*[^:]%s",string);
    

    Kurt


Anmelden zum Antworten