Fscanf dans la boucle while (langage C)
Résolu
oupsman
Messages postés
316
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
A voir également:
- Fscanf eof
- [C] soucis avec les espaces dans fscanf - Forum C
- La fonction fscanf ou fgets ✓ - Forum C
5 réponses
Bonjour,
while(fscanf(le_nom_du_fichier, " %s %s %c %s", nom, prenom, &sexe, datenaissance) != EOF)
la fonction fscanf() ne renvoie jamais EOF, elle renvoie le nombre d'items lus, dans votre cas le résultat normal est 4, donc vous devez tester == 4
Vous n'avez sans doute pas copié votre ligne réelle. Je ne serais pas étonné qu'elle se termine par un point-virgule.
Manu
while(fscanf(le_nom_du_fichier, " %s %s %c %s", nom, prenom, &sexe, datenaissance) != EOF)
la fonction fscanf() ne renvoie jamais EOF, elle renvoie le nombre d'items lus, dans votre cas le résultat normal est 4, donc vous devez tester == 4
Vous n'avez sans doute pas copié votre ligne réelle. Je ne serais pas étonné qu'elle se termine par un point-virgule.
Manu
En fait c'est un truc tout bête !!!!
dans ma fonction c'était
{
...
while( ...);
{
}
}
Il y avait le point virgule qui s'est glissée juste après la fermeture de la parenthèse de while !!!
En tout cas merci à tous ceux qui m'ont répondu, bonne soirée à tous ;-)
dans ma fonction c'était
{
...
while( ...);
{
}
}
Il y avait le point virgule qui s'est glissée juste après la fermeture de la parenthèse de while !!!
En tout cas merci à tous ceux qui m'ont répondu, bonne soirée à tous ;-)
ben deja ton printf il est bizarre...
tu as 4 variables et 6 formats...
ça serait plutot
tu as 4 variables et 6 formats...
ça serait plutot
printf("\nRESULTAT %s %s %c %s\n", nom, prenom, sexe, datenaissance);
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
Essaie ce code :
Cdt
Essaie ce code :
#include <stdio.h> int main(void){ char nom[15],prenom[15],sexe,date[10]; FILE *fp=fopen("president.txt","r"); while(fscanf(fp,"%s %s %c %s",nom,prenom,&sexe,date)!=EOF){ printf("nom: %s\n",nom); printf("prenom: %s\n",prenom); printf("sexe: %c\n",sexe); printf("date: %s\n",date); } return 0; }
Cdt
la fonction fscanf teste bien un EOF, j'ai vu ça dans un tuto.
preuve : j'ai le fichier nombres.txt
son contenu est
1
2
3
4
5
6
7
voici mon code :
int main(){
FILE * fic;
int nombre;
fic = fopen("nombres.txt", "r");
if(fic == NULL){
printf("Impossible d'ouvrir le fichier %s\n", "nombres.txt");
exit(1);
}
while(fscanf(fic, "%d", &nombre) != EOF){
printf("\nRESULTAT : %d\n", nombre);
}
if(fclose(fic) == EOF){
printf("\nProbleme de fermeture du fichier %s\n", "nombres.txt");
exit(1);
}
return 0;
}
Et comme résultat il m'affiche bien :
RESULTAT : 1
RESULTAT : 2
RESULTAT : 3
RESULTAT : 4
RESULTAT : 5
RESULTAT : 6
RESULTAT : 7
Conclusion : le teste d'EOF fonction réellement.