| 12
 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