Fichiers en accés direct , détection d'erreur défaillante
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:
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 :)