2008-09-24 12 views
1

J'écris un programme et j'ai du mal à utiliser le scanf et fopen à travailler ensemble.Comment utiliser scanf() avec fopen

D'après ce que je peux dire à mes lignes erronées semble être:

FiLE * DataFile 
DataFile = fopen("StcWx.txt","r"); 
scanf(DataFile, "%i %i %i %.2f %i %i", &Year, &Month, &Day, &Precip, &High, &Low); 

Le fichier ouvre à partir a une liste de données météorologiques qui ressemble à ceci:

1944 4 12 0 58 24 
1944 4 13 0.4 58 29 
1944 4 14 0.54 42 29 
1944 4 15 0 43 27 

(Ces espaces sont Onglets)

L'erreur affichée est "[Warning] passant arg 1 de` scanf 'à partir du type de pointeur incompatible "

Quelqu'un peut-il m'aider?

+0

Vous devez donner un peu plus de détails. Par exemple, quels sont les types Année, Mois, Jour, Précip, Haut et Bas? –

Répondre

1

Vous utilisez la mauvaise fonction. Vous devriez utiliser fscanf.

2

Votre code semble devoir utiliser fscanf, pas scanf.

Je suggère fortement d'utiliser fgets et sscanf plutôt que d'appeler directement fscanf.

Le fscanf peut échouer de manière à laisser un doute sur l'emplacement de votre pointeur de fichier. L'utilisation de fgets pour obtenir des lignes entières et sscanf pour analyser les chaînes signifie que vous connaissez toujours l'état du pointeur de fichier et qu'il est très facile de sauvegarder jusqu'au début de la ligne (la chaîne est toujours en mémoire).

+0

... et atoi() pour le 4ème paramètre –