2016-04-19 11 views
-1

Ich habe versucht, herauszufinden, wo ich falsch liege, aber ich kann nicht scheinen, wo genau mein Fehler ist.Bis zum Ende der Datei in Array lesen

Ich versuche, aus meiner Textdatei zu lesen, diese ganzen Zahlen

5 2 4 9 10 1 8 13 12 6 3 7 11 

in ein Array A. Um sicherzustellen, dass es funktioniert, ich habe versucht, A zu drucken, sondern nur große Zufallszahlen stattdessen bekommen. Kann mir jemand helfen zu sehen, wo ich falsch liege?

int main(){ 

FILE* in = fopen("input.txt","r"); 

int A[100]; 

while(!feof(in)){ 
    fscanf(in, "%s", &A); 
    printf("%d", A) 
    } 

fclose(in); 
return 0; 
} 

* das ist nur die wichtigsten Teile des Codes auf die Frage im Zusammenhang

+1

Bitte lesen Sie [Warum ist „während (feof (Datei)!)“ immer falsch?] (http://stackoverflow.com/questions/5431941/why-is-while-feof-file -immer falsch). –

+1

Sie müssen ein [gutes Buch] (http://stackoverflow.com/a/562377/3386109) über die Grundlagen der C-Programmierung lesen. – user3386109

+0

Für Ihr Problem, Sie drucken die * Adresse * von wo das erste Element von 'A' gespeichert ist (d. H.' & A [0] '). –

Antwort

1

Für alle, die tatsächlich lesen, warum feof mit immer falsch ist, ist die Lösung etwas ähnliches wie die folgenden. Der Code wird den Dateinamen als erstes Argument an das Programm gegeben öffnen (oder von stdin standardmäßig lesen):

#include <stdio.h> 

enum { MAXI = 100 }; 

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

    int i = 0, A[MAXI] = {0}; /* initialize variables */ 
    /* read from file specified as argument 1 (or stdin, default) */ 
    FILE *in = argc > 1 ? fopen (argv[1],"r") : stdin; 

    if (!in) { /* validate file opened for reading */ 
     fprintf (stderr, "error: file open failed '%s'.\n", argv[1]); 
     return 1; 
    } 

    /* read each number from file or until array full */ 
    while (i < MAXI && fscanf (in, " %d", &A[i]) == 1) 
     printf (" %d", A[i++]); 
    putchar ('\n'); 

    if (in != stdin) fclose (in); 

    printf ("\n '%d' numbers read from the file.\n\n", i); 

    return 0; 
} 

Beispiel Verwendung/Output

Arbeiten mit Beispielwerten in der Datei dat/myints.txt Ergebnisse in die folgenden:

$ ./bin/rdints dat/myints.txt 
5 2 4 9 10 1 8 13 12 6 3 7 11 

'13' numbers read from the file.