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 -
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:
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:
- Manipulation Enregistrement avec les fichiers
- Renommer des fichiers en masse - Guide
- Fichiers epub - Guide
- Enregistrement mp3 gratuit - Télécharger - Streaming audio
- Wetransfer gratuit fichiers lourd - Guide
- Explorateur de fichiers - Guide
1 réponse
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
Pour le
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.