Comment lire jusqu'à la fin du fichier C, fscanf
Ce que j'ai lu à partir d'un fichier: un P1/s/e/t etc. /pour ligne. Après les lettres spécifiques(comme 'a') viennent quelques données que j'ai à collecter donc je ne veux pas utiliser fgets. Ce n'est pas en cours d'exécution. Pourriez-vous m'aider, s'il vous plaît?
char com[21];
fscanf(src,"%s",com);
while(com!=EOF)
{
if(com[0]=='a')
fprintf(dest,"%s 1",com);
if(com[0]=='s')
fprintf(dest,"%s 2",com);
fscanf(src,"%s",com);
}
- Vous ne donnez pas une raison satisfaisante pourquoi vous ne voulez pas utiliser
fgets
. Il sera beaucoup plus facile à examiner les données d'entrée une chaîne de caractères, qu'en série avecscanf
de la famille. Mais d'une façon, vous pouvez vérifier pour la fin de fichier est en testant le retour de la fonction valeur defscanf(src,"%s",com);
que vous devriez faire de toute façon.
Vous devez vous connecter pour publier un commentaire.
Moyen Simple est de tester si
fscanf()
réussi comme condition de la boucle et vous n'avez pas besoin d'unfscanf()
avant la boucle:fscanf()
retourne le nombre d'éléments correctement analysés. Donc, vous n'avez pas besoin de vérifier si c'est retournéEOF
.Noter que j'ai changé le format de la chaîne pour éviter le débordement de la mémoire tampon. Je vous suggère d'utiliser
fgets()
au lieu defscanf()
(et n'oubliez pas de prendre soin de caractères de saut de ligne si c'est important).Veuillez noter que
fscanf
retourne uninteger
qui peut indiquerEOF
lorsque la Fin de Fichier est atteinte. Veuillez vous référer aux pages de manuel pour plus de détails.Votre code devra être modifié comme ci-dessous: