salut a tous, et oui c'est encore moi mais bon javoue que ca me donne du fil a retordre.
voila je suis en train de faire un programme qui doit ecrire dans un fichier puis il doit le lire et tous afficher.
j'ai deja un bout de programme qui fonctionne en moitier parcequ'il ne me lit pas tous ce que j'ai rentrer dans le fichier.
les information que je rentre sont des structure global et mon programme est comme ca:
#include <stdio.h>
#include <stdlib.h>
struct repertoire
{
char nom[15] ;
char prenom[15];
int age;
char tel[15];
};
struct repertoire page;
int main(int argc, char *argv[])
{
void creation_fichier (void);
void remplir_fichier (void);
void lire_fichier (void);
void recherche_nom (void);
void modif_nom (void);
int choix;
while(1)
{
printf ("Creation de fichier, taper 1\n");
printf ("remplir le fichier, taper 2\n");
printf ("Consulter de fichier, taper 3\n");
printf ("Consultater par nom, taper 4\n");
printf ("Modification du nom, taper 5\n");
printf ("Pour quitter taper 6\n");
scanf ("%d", &choix);
switch(choix)
{
case 1 : creation_fichier ();
break;
case 2 : remplir_fichier ();
break;
case 3 : lire_fichier ();
break;
case 4 : recherche_nom ();
break;
case 5 : modif_nom ();
break;
case 6 : return 0;
}
}
system("PAUSE");
return 0;
}
void creation_fichier (void)
{
FILE *mon_fichier;
char annuaire[21];
printf ("Entrer le nom du fichier à créer : ");
scanf ("%s", annuaire);
printf("\n");
mon_fichier = fopen (annuaire, "a");
if (mon_fichier == NULL)
{
printf ("Erreur à l'ouverture du fichier\n\n");
return;
}
fclose(mon_fichier);
}
void remplir_fichier (void)
{
FILE *mon_fichier;
char annuaire[21];
char choix='Y';
printf ("Entrer le nom du fichier à saisir: ");
scanf ("%s", annuaire);
mon_fichier = fopen (annuaire, "a");
if (mon_fichier == NULL)
{
printf ("Erreur à l'ouverture du fichier\n\n");
return;
}
while (choix=='Y'||choix=='y')
{
printf ("Entrer les champs de votre fichier\n");
printf("Nom :\n");
scanf("%s",&page.nom);
printf("Prenom:\n");
scanf("%s",&page.prenom);
printf("Age :\n");
scanf("%d",&page.age);
printf("Num de tel :\n");
scanf("%s",&page.tel);
fwrite (&page, sizeof(struct repertoire), 1, mon_fichier);
printf ("Voulez vous continuer (Y/N) ?");
fflush(stdin);
scanf("%c", &choix);
printf("\n");
}
fclose(mon_fichier);
}
void lire_fichier (void)
{
char annuaire[21];
char choix='Y';
printf ("\n\nEntrer le nom du fichier à consulter :\n ");
scanf ("%s", annuaire);
FILE *mon_fichier;
mon_fichier = fopen (annuaire, "r");
if (mon_fichier == NULL)
{
printf ("Erreur à l'ouverture du fichier\n\n");
return;
}
while (choix=='y' || choix=='Y')
{
while ( fread (&page, sizeof(struct repertoire), 1, mon_fichier), !feof (mon_fichier))
{
printf("Nom : %s\n",page.nom);
printf("Prenom : %s\n",page.prenom);
printf("Age : %d\n",page.age);
printf("Num de Tel : %s\n",page.tel);
}
printf("voulez vous continuer (y/n?");
fflush(stdin);
scanf("%c",&choix);
printf("\n");
}
fclose(mon_fichier);
}
pour l'ecriture de mon fichier il ny a pas de probleme parceque quand j'ouvre le fichier en question il y a toutes mes information de memorisé, parcontre quand je veux relire mon fichier il ne me recupere seulement que le premier bloc d'information et il laisse tomber le reste.
est ce que quelqu'un aurai une petite idée sur la direction que je doi prendre pour trouver la solution.
merci d'avance
cacoucatatonique