Tabelle einlesen: Zugriffsverletzung



  • Hallo!
    Mittlerweile bin ich mit meinem Latein am Ende:
    Ich versuche eine Tabelle mit Zahlen in 7 Spalten, die mit Leerzeichen getrennt sind, aus einen .txt-file auszulesen und spaltenweise in in arrays abzulegen.
    Das erste Problem ist, dass das Programm nach einlesen einer Zeile sieben mal NULL liest.
    Das größere Problem ist, dass in Zeile 50

    data[line].pp1 = atoi(v3);
    

    eine Zugriffsverletzng auftritt und das Programm bei der Ausführung abstürzt. Die anderen Spalten will ich auf gleiche Art ablegen.
    Ich gehe davon aus, dass ich irgendeinen typischen Anfängerfehler gemacht habe. 😞
    Wäre für jede Erklärung dankbar. 🙂

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    struct detector
       {
           int pp1;
           int np1;
           int pe1;
           int ne1;
           int x;
           int y;
           int z;
         }   ;
    int main()
    {
    FILE *fp;
    char file_name[255];
    char daten[50];
    char *spalte;
    char* v1 =NULL;
    char* v2;
    char* v3;
    char* v4=NULL;
    char* v5=NULL;
    char* v6=NULL;
    char* v7=NULL;
    
    char ppp1[6] = " ";
    int i=0,j,line=0;
    detector data[2500] ;
    printf ("Pfad von evt14C.txt:");
    scanf("%s",file_name);
    
    fp = fopen(file_name, "r");
    if(fp == NULL)
    {printf("ERROR!");
    return(0);
    }
    for (i=0; i<=20; i++)
      { fgets(daten, sizeof(daten), fp) ;
    char del[]="   ";
    
    v1 = strtok (daten,del);						 
    
    v2 = strtok (NULL,del);
    
    v3 = strtok (NULL,del);
    data[line].pp1 = atoi(v3);
    v4 = strtok (NULL,del); 
    
    v5 = strtok (NULL,del); 
    
    v6 = strtok (NULL,del);	
    
    v7 = strtok (NULL,del);
    
    printf("spalte1: %s",ppp1);
    printf("spalte2: %s",v2);
    printf("spalte3: %s",v3);
    printf("spalte4: %s",v4);
    printf("spalte5: %s",v5);
    printf("spalte6: %s",v6);
    printf("spalte7: %s",v7);
    
    line++;
    }  
    
    return 0;
    }
    


  • Ich habe den Beitrag ausversehen mit anderem Benutzernamen eingegeben. Der Beitrag ist von mir. Sorry!



  • einruecken, sonst liest das keiner.



  • orcid1000 schrieb:

    Hallo!
    Mittlerweile bin ich mit meinem Latein am Ende:
    Ich versuche eine Tabelle mit Zahlen in 7 Spalten, die mit Leerzeichen getrennt sind, aus einen .txt-file auszulesen und spaltenweise in in arrays abzulegen.
    Das erste Problem ist, dass das Programm nach einlesen einer Zeile sieben mal NULL liest.

    bei mir nicht.

    Das größere Problem ist, dass in Zeile 50

    data[line].pp1 = atoi(v3);
    

    eine Zugriffsverletzng auftritt und das Programm bei der Ausführung abstürzt. Die anderen Spalten will ich auf gleiche Art ablegen.
    Ich gehe davon aus, dass ich irgendeinen typischen Anfängerfehler gemacht habe. 😞
    Wäre für jede Erklärung dankbar. 🙂

    [/cpp]

    Ich glaube nicht, dass Data[line] mit dem Programm bis 50 kommt. 😉
    Ich denke, Du liest einfach mehr Datensätze aus als drinstehen.
    Wenn das ein C Programm ist, heißt es in Zeile 31

    struct detector data[2500] ;



  • 😃 😃 😃
    Danke für die Antwort!!!
    Ich habe auch meinen Denkfehler entdeckt. Danke! Danke!
    Wieder was dazugelernt.Super!


Anmelden zum Antworten