Manipulation Enregistrement avec les fichiers

WalidDk1 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour tout le monde,

j'ai un exercice ou je dois créer un enregistrement contentant le nom, prénom, note, matricule en assurant l'unicité de matricule.

Mon problème est que mon code ne vérifie cette condition que pour les 2 dernier matricule saisie et la boucle while(trouve) apparemment ne fonctionne pas ....

voici mon code:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <stdbool.h>


typedef struct
{
char Matricule[100];
char Nom[50];
char Prenom[50];
float Note1;
}Etudiant;

int main()
{

FILE *f2;
f2 = fopen("StudentsList2.txt","w+");
if(f2 == NULL)
{
printf("Erreur!");
exit(-1);
}
int M,i;
printf("Saisir le nombre d'enregistrements M :");
scanf("%d",&M);
Etudiant etd2[M];
int j = 0;

while( j < M)
{
printf("Saisir le nom : \n");
scanf("%s",etd2[j].Nom);
printf("Sasiri le prenom : \n");
scanf("%s",etd2[j].Prenom);
printf("Saisir la 1ere note \n");
scanf("%f",&etd2[j].Note1);
printf("Saisir le Matricule : \n");
scanf("%s",etd2[j].Matricule);
fprintf(f2,"Nom : %s, Prenom : %s, Note1 : %f \n",etd2[j].Nom,etd2[j].Prenom,etd2[j].Note1);
j++;
}
fclose(f2);
// vérification unicité //
f2 = fopen("StudentsList2.txt","r");
bool trouve = true;
for( j = 0; j<M; j++)
{
for( i = j+1; i<M; i++)
{
while(trouve)
{
if (strcmp(etd2[j].Matricule, etd2[i].Matricule) != 0)
{
trouve = false;
} else {
fclose(f2);
trouve = true;
printf("Matricule existant! entrer a nouveau! : \n");
scanf("%s", etd2[i].Matricule);
f2 = fopen("StudentsList2.txt","w+");
// remplissage //
for(i = 0; i<M; i++)
{
fprintf(f2,"Nom : %s, Prenom : %s, Note1 : %f, Matricule : %s \n",etd2[i].Nom,etd2[i].Prenom,etd2[i].Note1,etd2[i].Matricule);
}

}
}
}
}
fclose(f2);
}
A voir également:

1 réponse

Dalfab Messages postés 706 Date d'inscription   Statut Membre Dernière intervention   101
 
Bonjour,

La manière utilisée pour remplir le fichier est très complexe et sera difficile à mettre au point avec ta structure.
Il est plus simple (y compris pour l'utilisateur) de vérifier dès la saisie que le matricule n'est pas déjà connu.
Il y a deux boucles imbriquées qui utilisent la même variable
i
. Ça ne peut pas marcher.

Pour le
while()
qui ne fonctionne pas, ça n'est pas facile à analyser, peut-être est-dû au problème précédent.
0