Bonsoir
Je viesn demander conseil sur le forum sur un programme que je fais.
En fait je fais un programme en C . "=> gestion de fichier eleves".
Donc mon probleme c'est quand je rentre le nom de l'eleve , il ya d'autres caracteres qui s'introduisent dans le fichier. de meme que quand je rentre les nom des matieres.
Et aussi quand j'ouvre en mode lecture le fichier eleve et matieres et ecriture du fichier notes afin de mettre les notes il ya aussi des caracteres qui s'introduisent dans le fichier note . je ne comprends pas . si quelqu'un peut m'aider . car j'ai vraiment chercher l'ereur mais je la trouve pas.
Merce d'avance.
Voici mon code .
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
 
typedef struct eleve
    {
           int numel;
           char nom[50];//50 caracteres maximun pour le nom
           int age;
          // float note;
    }
eleve ;
 
typedef struct matiere
{
        int nummat;
        char nommat[15];
        int coeff;
        }
matiere;
 
typedef struct note
{
int nummel;
char nomel[50];
char nommat[15];
float noteel;
float moyenne;
}
note;
/*******************************************************************************/
void nouvel_eleve (FILE *fichier, char *nom_fichier)
{ 
eleve student;
nom_fichier="eleve.dat";
fichier = fopen(nom_fichier,"a+");
 
	printf("\n saisie eleve");
	printf("\nNOM: ");
   scanf("%s",&student.nom);
    fwrite(&student,sizeof(eleve),1,fichier);
 
printf("\nLeleve %s  ",student.nom);
printf(" a ete bien enregistre \n");
printf("Appuyer pour sortir");
fclose(fichier);
getch();
} 
/***********************************************************************/
void saisi_mat(FILE *fichier2,char *nom2_fichier2)
{
matiere mat;
nom2_fichier2="matiere.dat";
fichier2=fopen(nom2_fichier2,"a+");
printf("Saisisser les matieres\n"); 
scanf("%s",&mat.nommat);
fwrite(&mat,sizeof(matiere),1,fichier2);
printf("Appuyer pour sortir");
fclose(fichier2);
getch();
}  
/**********************************************************************/    
void lire_eleve(FILE *fichier,char *nom_fichier)
{
eleve student;
matiere mat;
int i=1;
//nom2_fichier2="matiere.dat";
//fichier2=fopen(nom2_fichier2,"a+");
nom_fichier="eleve.dat";
fichier=fopen(nom_fichier,"a+");
printf("Voici le liste des eleves enregistres\n");
 
while(fread(&student,sizeof(eleve),1,fichier)!=0)// retourne un entier different de 0 donc le fichier contient quelelque choz
	{
	printf("eleve no %d \n",i);
    i++;
	printf(" %s ",student.nom);	
	//fwrite(&student,sizeof(eleve),1,fichier);
    } 
fclose(fichier);
getch();
}
/************************************************************************************/
void saisi_note(FILE *fichier,char *nom_fichier,FILE *fichier2,char *nom2_fichier2,FILE *fichier3,char *nom3_fichier3)
{
eleve student;
matiere mat;
note not;
nom_fichier="eleve.dat";
nom2_fichier2="matiere.dat";
nom3_fichier3="note.dat";
fichier=fopen(nom_fichier,"r");
fichier2=fopen(nom2_fichier2,"r");
fichier3=fopen(nom3_fichier3,"a+");
 
//if(fread(&student,sizeof(eleve),1,fichier) && fread(&mat,sizeof(matiere),1,fichier2)!=0)// test si les fichiers ne sont pas vides
//{
while(fread(&student,sizeof(eleve),1,fichier)&& fread(&mat,sizeof(matiere),1,fichier2)&& fread(&not,sizeof(note),1,fichier3)!=0)// meme test que le if mais en fesant une boucle
	{
	printf("eleve :");
	//printf("%d",&student.numel);
	printf("%s",&student.nom);
	printf("%s",&mat.nommat);
	scanf("%d",&not.noteel);
	printf("\n");	
fwrite(&not,sizeof(note),1,fichier3);// ecriture dans le fichiers notes des infos saisies
 
}
printf("Enregistrement reussi!!!\n");
 fclose(fichier);
 fclose(fichier2);
 fclose(fichier3);     
//}else{  // si le fichier est vide alors...
    //  printf("Un des fichiers Eleve ou Matiere est vide veuiller le renseigner dabord merki!!!");
    //  }
 
   // fwrite(&mat,sizeof(matiere),1,fichier2);
 
printf("Appuyer sur une touche pour retourner au menu.");
getch();
}
 
/**************************************************************************************/
int main()
{
FILE *fichier, *fichier2,*fichier3;
char nom[10],nom2[10],nom3[10];/* nom du fichier */
char choix;
do
{
system("cls");
  	printf("CREATION DUn FICHIER ELEVE ---> 1\n");
	printf("LECTURE DU FICHIER  ELEVE ---> 2\n");
   	printf("Saisie note ELEVE ---> 3\n");
   	printf("Saisie matiere -->4\n");
	printf("SORTIE CONSOLE  ---> S\n\n");
	printf("VOTRE CHOIX: ");
	choix = (char)getchar();
 
	switch(choix)
		{
		case '1':nouvel_eleve(fichier,nom);
        break;
		case '2':lire_eleve(fichier,nom);
        break;                                                                              
		case '3':saisi_note(fichier,nom,fichier2,nom2,fichier3,nom3);
        break;
        case'4':saisi_mat(fichier,nom);
		}
}
while ((choix!='S') && (choix!='s'));
printf("Appuyer pour quitter l'espace de travail");
getch();
}