salut a tous!
bon je dois faire un agenda en C mais j’ai un probleme au niveau d’un module affichage
mon probleme est le suivant :
quand je rentre des personne dans mon programme il les ecrit sur un fichier et me les retourne quand je lui demande …
le progble vien que quand je lui demande de m’afficher tout les contact de mon fichier il lit tout le fichier et “print” toute les personnes MAIS ! la derniere personne que j’ai rentré il me la donne 2 fois…
je vous met le code ( c’est assé gros dsl)
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
// #### STRUCTURE ####
typedef struct
{
char nom[50];
char prenom[50];
char age[50];
char adresse[50];
char mas[50];
char codep[50];
char tel[50];
}personne;
personne contact;
FILE *fic_contacts;
// ### FONCTION AFFICHER!!! ###
void afficher()
{
int choix;
fic_contacts = fopen("c:\\contacts.txt","r");
printf("\n");
system("cls");
printf(" # Vous desirez afficher # \n\n");
printf(" 1 - Tout les contacts\n");
printf(" 2 - Une personne en particulier\n");
printf(" choix : ");
scanf("%d",&choix);
if (choix == 1)
{
// ouverture du fichier en lecture
if((fic_contacts=fopen("c:\\contacts.txt","r"))==NULL)
{
printf("personne dans vos contact, appuyer sur une touche...");
getch();
main();
}
fic_contacts = fopen("c:\\contacts.txt","r");
while (!feof(fic_contacts))
{
fread(&contact,sizeof(contact),1,fic_contacts);
printf("\t\20Nom : %s\n", contact.nom);
printf("\t\20Prenom : %s\n", contact.prenom);
printf("\t\20Adresse : %s\n", contact.adresse);
printf("\t\20Ville : %s\n", contact.mas);
printf("\t\20Code Postal : %s\n", contact.codep);
printf("\t\20Telephone Fixe : %s\n", contact.tel);
printf("\n\n");
}
printf("appuyer sur une touche pour retourner au menu");
getch();
printf("\n\n\n");
main();
fclose(fic_contacts);
}
if (choix == 2)
{
if((fic_contacts=fopen("c:\\contacts.txt","r"))==NULL)
{
printf("personne dans vos contact, appuyer sur une touche...");
getch();
main();
}
char name[30];
char pren[30];
FILE *fic_contacts ;
printf("\n");
printf("Rentrer le NOM : ");
scanf("%s",name);
printf("\n");
printf("Rentrer le prenom: ");
scanf("%s",pren);
fic_contacts = fopen("c:\\contacts.txt","r"); // ouverture du fichier
// compare les listes de caracteres rentré et presente sur le fichier contact.txt
while ( !feof(fic_contacts) )
{
fread(&contact,sizeof(contact),1,fic_contacts);
if(strcmp(name,contact.nom)== 0 && strcmp(pren,contact.prenom)== 0 )
{
printf("\n");
printf(" Voici Les contacts enregistres dans votre AGENDA\n\n");
printf("\t\20Nom : %s", contact.nom);
printf("\n");
printf("\t\20Prenom : %s", contact.prenom);
printf("\n");
printf("\t\20Adresse : %s", contact.adresse);
printf("\n");
printf("\t\20Ville : %s", contact.mas);
printf("\n");
printf("\t\20Code Postal : %s", contact.codep);
printf("\n");
printf("\t\20Telephone Fixe : %s", contact.tel);
printf("\n\n");
printf("appuyer sur une touche pour revenir au menu");
getch();
main();
}
}
if(strcmp(name,contact.nom)!= 0 && strcmp(pren,contact.prenom)!= 0 )
{
printf("\n");
printf("La personne ne se trouve pas dans votre agenda\n");
printf("appuyer sur une touche pour revenir au menu\n");
getch();
main();
}
}
}
si quelqun peu m’aider ou me mettre sur le vois…
merci