Bonjour,
J'aurais besoin d'aide pour un exercice en C, je suis bloqué je ne comprends pas d'où vient le problème.
J'ai un fichier "UE1.txt" qui contient un numéro étudiant, un prénom, un nom et une note(ou ABI pour absence non justifiée) par ligne. Exemple:
15100322 Tom Petit 18.5
15363222 Alain Terieur 13
12345235 Rachid Amar ABI
...
J'aimerais stocker dans une variable le retour de fscanf afin d'afficher le nombre de champ par ligne.
Le problème c'est que à partir d'une certaine ligne fscanf retourne 0. 4 pour la première ligne, 4 pour la seconde, 3 pour la troisième mais après ça déconne et ça retourne 0 pour le reste. Je ne comprends pas d'où vient le problème.
Le code :
Le fichier txt :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]){ if(argc!=2){ fprintf(stderr, "Erreur le nombre d'argument n'est pas correct.\n"); } FILE *fic=fopen(argv[1],"r"); if(fic==NULL){ fprintf(stderr, "Fichier innexistant.\n"); } int identifiant; char prenom[255]; char nom[255]; float note; int res; res=fscanf(fic,"%d %s %s %f",&identifiant,prenom,nom,¬e); printf("%d %d %s %s %f\n",res,identifiant,prenom,nom,note); res=fscanf(fic,"%d %s %s %f",&identifiant,prenom,nom,¬e); printf("%d %d %s %s %f\n",res,identifiant,prenom,nom,note); res=fscanf(fic,"%d %s %s %f",&identifiant,prenom,nom,¬e); printf("%d %d %s %s %f\n",res,identifiant,prenom,nom,note); res=fscanf(fic,"%d %s %s %f",&identifiant,prenom,nom,¬e); printf("%d %d %s %s %f\n",res,identifiant,prenom,nom,note); res=fscanf(fic,"%d %s %s %f",&identifiant,prenom,nom,¬e); printf("%d %d %s %s %f\n",res,identifiant,prenom,nom,note); res=fscanf(fic,"%d %s %s %f",&identifiant,prenom,nom,¬e); printf("%d %d %s %s %f\n",res,identifiant,prenom,nom,note); return 0; }
Le résultat du programme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 15100322 Tom Petit 18.5 15363222 Alain Terieur 13 12345235 Rachid Amar ABI 14222274 Sophie Sticket 8.5 15339008 Jérôme Lantin 4.5 14566667 Corentin Louvain ABI 15234331 Louis Martinez 20 14445433 Albert Debout 12 15660078 Lena Loupi 16.5 14555555 Zoé Toulemonde 2 15233339 Julie Arçon ABI 15342122 Paul Baluche 5.5
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 4 15100322 Tom Petit 18.500000 4 15363222 Alain Terieur 13.000000 3 12345235 Rachid Amar 13.000000 0 12345235 Rachid Amar 13.000000 0 12345235 Rachid Amar 13.000000 0 12345235 Rachid Amar 13.000000 ...
Partager