RootASM
Messages postés17Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention 4 avril 2006
-
3 avril 2006 à 11:13
RootASM
Messages postés17Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention 4 avril 2006
-
4 avril 2006 à 10:49
Bonjour,
Voila, je crée un fichier qui contient des informations sur des membres d'un club et pour éviter de tout le temps accéder au fichier, je crée un index qui contient le nom et le numero de la personne pour faire mes recherche en vue de modifier ou supprimer un enregistrements.
Au depart le fichier est "bidonné", et ne contient rien
Le probleme vient de ma fonction Creation_index, le programme plante tout simplement...
Lorsque je vais dans le debugger VisualC++ il me dit que l'expression ne peut etre évaluer
Voici la fonction Creation_index
void Creation_index(struct MEMBRE *mbr, struct INDEX *ind)
{
FILE *fp;
int i;
fp = fopen("membre.dat", "r+b"); ouvre le fichier
fread(mbr, sizeof(struct MEMBRE), 100, fp); lit les 100 enregistrements
for(i=0;i<100;i++)
{
strcpy(ind->nom, mbr->nom); place dans l index le nom trouver dans le fichier
ind->numlicense = mbr->numlicense; le num de la personne
ind->position = i;
ind ++;
mbr++;
}
fclose(fp);
Et voila ma fonction Affiche
void Listage_fichier(struct INDEX *ind, struct MEMBRE *mbr)
{
FILE *fp;
int nbenreg = 0;
printf("\n LISTE DES MEMBRES\n");
printf(" -----------------\n\n");
do
{
if(strcmp(ind->nom, " ") != 0) c'est ici que l 'erreur se produit
{
printf("%d %s %s %d/%d/%d\n", ind->numlicense, mbr->nom, mbr->prenom, mbr->nais.jour, mbr->nais.mois, mbr->nais.annee, mbr->sexe);
}
mbr++;
ind++;
nbenreg++;
}while(nbenreg < 100);
}
fclose(fp);
printf("\nAppuyer sur une touche pour continuer...");
getch();
cs_louis14
Messages postés793Date d'inscriptionmardi 8 juillet 2003StatutMembreDernière intervention10 février 20218 3 avril 2006 à 22:01
il faudrait initialiser les variables avec des valeurs nulles au départ. Mais le plus imortant est de tester le résultat de fread pour voir si quelque chose a été lu et traiter selon les cas :
- lecture ok => on recopie
-lecture pas ok , on met des valeurs par défaut, mais surtout on signale que rien n'a été lu par une valeur en retour.
à toi de jouer
RootASM
Messages postés17Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention 4 avril 2006 4 avril 2006 à 10:49
J'ai tester la valeur retournée par fread et elle est bien égale au nombre d'enregistrement (100).
Si la lecture n'a pas été je ne peux pas mettre des valeurs par défaut car mon index me sert pour faire mes ajout, suppression...