Salut à tous,

voilà je fais un programme de gestion d'élève avec fichier en accés direct, j'ai mis des détecteurs d'erreurs dans mon programme pour détecter si le numéro d'élève entré est utilisé ou non...
Mais ils ne fonctionnent pas...

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
 
void creation()
 
	{
		// Variables
		int NbEleve;
		char rep;
		int i;
		int TestEcriture;
		int TestPointeur;
		int TestLecture;
 
		// Ici l'utilisateur va créer et donner un nom au fichier qu'il désire utiliser
 
 
 
		system("cls");
		printf("*** Creation du fichier *** \n\n");
 
		printf("Entrez le nom du fichier que vous souhaitez créer : \n");
		scanf("%s",&nomfich);
 
 
 
		printf("Entrez le nombre d'eleve ? \n ");
		scanf("%i",&NbEleve);
 
		InitFichier(NbEleve);
 
		FILE*Repertoire;
 
		Repertoire=fopen(nomfich,"r+");
 
		do
		{
 
				printf("\n Donnez le numero, UNIQUE, de l'eleve : \n");
				scanf("%i",&eleve.numero);
 
 
 
				// Positionnement à l'enregistrement concernant le numéro entré
 
				TestPointeur=fseek(Repertoire,sizeof(elev)*(eleve.numero-1),SEEK_SET); // fseek renvoie 0 si le positionnement s'est bien déroulé
 
 
 
 
				TestLecture=fread (&eleve, sizeof(elev), 1,Repertoire) ;
 
 
 
				if(TestPointeur==0 && TestLecture==1)
				{	
					if(eleve.valide==true)
					{
					printf("Entrez le nom de l'eleve : \n\n ");
					scanf("%s",&eleve.nom);
 
					printf("Entrez son prenom : \n\n");
					scanf("%s",&eleve.prenom);
 
					eleve.moyenne=0;
					eleve.valide=false;
 
					//Initialisation du tableau des notes
 
					for(i=0;i<5;i++)
					{
						eleve.note[i]=0;
					}
 
					}
					else
					{
						printf("Erreur le numero UNIQUE entre est deja en cours d'utilisation");
						rep=='o';
					}
 
					//recule au début de l'enregistrement puisqu'on la lu auparavent
					fseek(Repertoire,-sizeof(elev),SEEK_SET);
 
					TestEcriture=fwrite(&eleve,sizeof(elev),1,Repertoire); // Fwrite renvoie une valeur négative en cas d'erreur
					// En cas de manque d'espace disque
 
					if(TestEcriture<0)
					{
						printf("\n Erreur lors de l ecriture dans le fichier, Code Erreur 3");
						fclose (Repertoire);
						main();
 
					}
 
 
				}
 
				else
 
				{
					printf(" \n Erreur lors du positionnement du pointeur \n notez le code erreur 2");
					getch();
					rep='o';
 
				}
 
 
 
 
 
			printf(" \n Saisie d'un eleve ? (o/n) \n");
			rep=getch();
 
		}while(rep=='o');
 
		fclose(Repertoire);
 
		main();
 
 
	}
Merci