2017-10-01 7 views
1

ich eine TXT-Datei, die ichMalloc druckt nicht korrekt?

Hier ist die txt-Datei einige grundlegende C zu lernen, bin mit:

8 
12 48 15 65 16 82 9 72 

Hier ist der Code:

int main(int argc, char** argv){ 

     int num; 
     int arr[100000]; 
     int index = 0; 
     int size = 0; 

     if (argc != 2){ 
       return 0; 
     } 

     FILE *inputFile = fopen(argv[1], "r"); 

     if (inputFile == NULL){ 
       printf("Error1\n"); 
       return 0; 
     } 

/*  while(!feof(inputFile)){ 
       num = fgetc(inputFile); 
       if(isdigit(num)){ 
         num = num - '0';= 
         printf("%c\n",num); 
       } 
     }*/ 

     while(fscanf(inputFile, " %d", &num) == 1){ 
       arr[index] = num; 
       index++; 
     } 

     size = arr[0]; 
     int * list = (int*)malloc(sizeof(int)*size); 
     int i; 

     for(i = 1; i <= size; i++){ 
       list[i-1]=arr[i]; 
       printf("%d\n", list[i]); 
     } 




     if(!feof(inputFile)){ 
       printf("error"); 
       return 0; 
     } 

} 

ich suche zu malloc das Array, aber ich bekomme immer eine Ausgabe von 0, 0, 0, 0, 0, ..... was läuft schief? Ich denke, vielleicht ist meine Print-Aussage falsch, aber ich bin neu in C. .. irgendwelche Tipps?

+0

Dies liegt daran, Sie setzen 'Liste [i-1]' aber Druck 'Liste [i]'. Voting zum Schließen als Tippfehler (Sie können Ihre Frage löschen, wenn die Kommentare auch eine akzeptable Antwort liefern). – dasblinkenlight

+0

Guter Job für die korrekte Verwendung von fscanf und feof –

Antwort

0

Sie haben 9 Artikel, nicht 8

size = arr[0]; 
    //printf("size %d %d\n", size,index); 
    int * list = (int*)malloc(sizeof(int)*(index)); 
    int i; 

    for(i = 1; i <= index; i++){ 
      list[i-1]=arr[i-1]; 
      printf("%d\n", list[i-1]); 
    }