Manipulation Enregistrement avec les fichiers

Fermé
WalidDk1 Messages postés 1 Date d'inscription samedi 15 mai 2021 Statut Membre Dernière intervention 15 mai 2021 - 15 mai 2021 à 17:23
Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 16 mai 2021 à 15:33
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 dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
16 mai 2021 à 15:33
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