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();
} |
Partager