Bonjour,
j'ai un problème dans un programme C lors de l'utilisation des structures dans les fichiers.. c'est que cette boucle est infinie !!
ceci est la procédure de remplissage du fichier:
et ceci est la procédure d'ajout des autres personnes :
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
37
38
39
40 void remp(){ printf("donner le nome de fichier a creer : \n"); scanf("%s",f); p = fopen(f, "w"); printf("*** Création du fichier %s ***\n", f); printf("nombre des personnes que vous voulez ajoute :\n "); scanf("%d",&n); for (i=0;i<n;i++) { printf("personne N: %d \n", i+1); printf("Numero de personne N: %d \n", i+1); scanf("%d",&e.nm); printf("Nom de personne N: %d \n", i+1); scanf("%s",e.nom); printf("Prenom de personne N: %d \n", i+1); scanf("%s",e.pnom); printf("adress electronique de personne N: %d \n", i+1); scanf("%s",e.email); printf("date de naissance de personne N: %d \n", i+1); scanf("%d",&e.d.j); scanf("%d",&e.d.m); scanf("%d",&e.d.a); fprintf(p, "%d, %s, %s, %s, %d/%d/%d\n",e.nm,e.nom,e.pnom,e.email,e.d.j,e.d.m,e.d.a); } fclose(p); }
la boucle infinie est:
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66 void ajoute(){ printf("donner le nome de votre fichier : \n"); scanf("%s",f); p = fopen(f, "r"); c=0; if (!p) { c=1; } if(c==0){ q = fopen(qq, "w"); printf("personne N: %d \n", i+1); printf("Numero de personne N: %d \n", i+1); scanf("%d",&e.nm); printf("Nom de personne N: %d \n", i+1); scanf("%s",e.nom); printf("Prenom de personne N: %d \n", i+1); scanf("%s",e.pnom); printf("adress electronique de personne N: %d \n", i+1); scanf("%s",e.email); printf("date de naissance de personne N: %d \n", i+1); scanf("%d",&e.d.j); scanf("%d",&e.d.m); scanf("%d",&e.d.a); while (!feof(p)) { fscanf(p, "%d, %s, %s, %s, %d/%d/%d\n",&e.nm,e.nom,e.pnom,e.email,e.d.j,e.d.m,e.d.a); fprintf(q,"%d, %s %s, %s, %d/%d/%d\n",e.nm,e.nom,e.pnom,e.email,e.d.j,e.d.m,e.d.a); } fprintf(q,"%d, %s %s, %s, %d/%d/%d\n",e.nm,e.nom,e.pnom,e.email,e.d.j,e.d.m,e.d.a); while (!feof(p)) { fscanf(q, "%d, %s, %s, %s, %d/%d/%d\n",&e.nm,e.nom,e.pnom,e.email,e.d.j,e.d.m,e.d.a); fprintf(p,"%d, %s %s, %s, %d/%d/%d\n",e.nm,e.nom,e.pnom,e.email,e.d.j,e.d.m,e.d.a); } fclose(q); fclose(p); } else if (c==1){ printf("\a erreur: impossible d'ouvrir le fichier: %s.\n", f);} }
et aussi cette boucle est infinie !! :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 while (!feof(p)) { fscanf(p, "%d, %s, %s, %s, %d/%d/%d\n",&e.nm,e.nom,e.pnom,e.email,e.d.j,e.d.m,e.d.a); fprintf(q,"%d, %s %s, %s, %d/%d/%d\n",e.nm,e.nom,e.pnom,e.email,e.d.j,e.d.m,e.d.a); }
merci de m'aider à résoudre ce problème...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 while (!feof(p)) { fscanf(q, "%d, %s, %s, %s, %d/%d/%d\n",&e.nm,e.nom,e.pnom,e.email,e.d.j,e.d.m,e.d.a); fprintf(p,"%d, %s %s, %s, %d/%d/%d\n",e.nm,e.nom,e.pnom,e.email,e.d.j,e.d.m,e.d.a); }
merci d'avance![]()
Partager