2016-04-19 1 views
-1

J'ai essayé de comprendre où je vais mal mais je ne peux pas sembler indiquer où mon erreur est exactement.Lire jusqu'à la fin du fichier dans le tableau

Je suis en train de lire mon fichier texte, ces entiers

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

dans un tableau A. Pour que cela fonctionne, je tentais d'imprimer A mais seulement obtenir un grand nombre au hasard à la place. Quelqu'un peut-il m'aider à voir où je vais mal s'il vous plaît?

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; 
} 

* Ceci est juste les principales parties du code relatives à la question

+1

S'il vous plaît lire [Pourquoi est « while (feof (fichier)!) » toujours tort?] (http://stackoverflow.com/questions/5431941/why-is-while-feof-file -toujours faux). –

+1

Vous devez lire un [bon livre] (http://stackoverflow.com/a/562377/3386109) sur les bases de la programmation C. – user3386109

+0

En ce qui concerne votre problème, vous imprimez l'adresse * du premier élément de 'A' (c'est-à-dire' & A [0] '). –

Répondre

1

Pour tous ceux qui lisent réellement pourquoi l'utilisation feof est toujours tort, la solution est quelque chose de similaire à ce qui suit. Le code ouvrira le nom de fichier donné comme premier argument au programme (ou lire stdin par défaut):

#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; 
} 

Exemple d'utilisation/sortie

En utilisant vos valeurs par exemple dans le fichier dat/myints.txt résultats dans les éléments suivants:

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

'13' numbers read from the file.