begin process at 2012 02 12 13:59:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

fonction fread()


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

fonction fread()

jeudi 23 octobre 2008 à 10:02:45 | fonction fread()

cacoucatatonique

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
jeudi 23 octobre 2008 à 10:56:32 | Re : fonction fread()

fregolo52

Membre Club
salut,

vu que ton test ne te retourne pas ce que tu espères, je serais toi, je commencerais par les virer du while et de stocker les valeurs de retour  de chaque fonction pour savoir laquelle te retourne une erreur.
Perso, je n'utilise jamais les virgules, quelle est sa signification entre tes 2 tests dans le while.
jeudi 23 octobre 2008 à 11:16:37 | Re : fonction fread()

cacoucatatonique

si tu parle de ca:
      while ( fread (&page, sizeof(struct repertoire), 1, mon_fichier), !feof (mon_fichier))
c pour lui dire qu'il me récupere les info jusqu'a la fin du fichier, et pour t'être sincère c'est l'exemple que le prof nous a donner en cours avec une adaptation pour lire des structures.
en faite l'exemple que l'on a eu etai le suivant:
while ( fread (&n, sizeof(int n), 1, mon_fichier), !feof (mon_fichier))
et pour ce que l'on doi faire il nous faut utiliser des structure.
ensuite de ce que l'on nous a expliquer si on ne met pas le "!feof (mon_fichier)" le pogramme saretera a la premiere valeur c pour ca qu'il y ai.
aprés perso ca fait que 3 semaine que je fait du C et je tavou que je rame enormement vue que je ne manipule pas souvent.

cacoucatatonique
jeudi 23 octobre 2008 à 11:27:09 | Re : fonction fread()

fregolo52

Membre Club
tu as un drole de prof, d'entrée de jeu il vous fait faire des tests comme ça !!!!
Essaie ça, juste pour faire des tests, après tu referas avec la méthode du prof :

int nbRead;
int isEnd;
nbRead = fread (&page, sizeof(struct repertoire), 1, mon_fichier);
isEnd = feof (mon_fichier);
while ( nbRead && !isEnd)
....
Et regarde les valeur nbRead et isEnd, ca va t'aider à savoir quelle fonction te retourne une erreur.
jeudi 23 octobre 2008 à 12:29:46 | Re : fonction fread()

cacoucatatonique

bein a vrai dire je ne l'ai pas choisi le prof :p

bein je te remercie et je testerai ca ce soir et je te tien au courant

cacoucatatonique

jeudi 23 octobre 2008 à 14:04:42 | Re : fonction fread()

fregolo52

Membre Club
En effet, on choisit pas ses profs.
J'en ai discuté autour de moi, et on en a conclu :
- le ", !feof(..)", est inutile. La virgule indique que le résultat ne sera pas pris en compte

donc ce qui te fera sortir du while c'est le code de retour du fread, uniquement.


jeudi 23 octobre 2008 à 14:36:03 | Re : fonction fread()

fregolo52

Membre Club
après avoir fait un petit test, je remarque que je t'ai dit une connerie.

Il semblerait que ce soit l'inverse.
Dans le while, la fonction fread est exécutée, mais le code de retour n'est pas pris en compte dans la condition de sortie du while. Seul le code de retour de feof est pris en compte.
donc c'est équivalent à faire :
while ( !feof (mon_fichier))
{
fread (&page, sizeof(struct repertoire), 1, mon_fichier);
...
}

Oublie mon 2e réponse, j'ai remarqué que mon code est faux
jeudi 23 octobre 2008 à 16:22:25 | Re : fonction fread()

cacoucatatonique

bein tu dira merci de ma part autour de toi, et c'est genial de savoir que le prof n'est si bon que ca snif.
bein je test ca mais vue ta reponse ca doit fonctionner donc bein je te tien au courant .
merci encore

cacoucatatonique
jeudi 23 octobre 2008 à 16:41:32 | Re : fonction fread()

SAKingdom

Membre Club
Ça donne quoi ceci:

while (fread (&page, sizeof(struct repertoire), 1, mon_fichier) >= sizeof(struct repertoire))
{

...
}

C++ (@++)

jeudi 23 octobre 2008 à 20:45:26 | Re : fonction fread()

cacoucatatonique

pour sakingdom, je suis désolé mais je ne suis pas assez experimenté en C pour te repondre ( ca fais mois d'un mois que je programme en c).

pour fregolo52, du coup alors je fait koi?

parceque tu ma un pe perdu
en cas je vai faire des essai pour voire un pe se qu'il va en resortir.
bein en cas bonne soiré et merci pour tout


cacoucatatonique


1 2

Cette discussion est classée dans : fichier, page, printf, void, choix


Répondre à ce message

Sujets en rapport avec ce message

probleme avec la modification de fichier texte [ par marabou ] voila g un pb car g doi fer une gestion de bibliotheque et dc g arrive a entré ds livre a regarder ms stock ms g aimerai modifier le fichier texte cad Besoin d'aide pour ce programme [ par ibnoul ] Salut j'aimerai avoir de l'aide a propos de ce programme en c++ il me sigale des errreurs et je ne parvient pas a les corriger. On me demande creer un demande d'aide (Gestion des fichiers et structures en C) [ par medsky ] Bonjour, Afin de manipuler les fichiers et les structures en C, On m'a demandé de réalisé une application qui cree un fichier pour saisir les inform lire une variable dans un fichier [ par momoko94 ] Bonjour, voila le problème, je voudrais rechercher dans un fichier le nombre d'etudinats d'une ville et l'afficher.typedef struct{    char nom_ville[3 calcul du nombre de caractere dans un fichier [ par Pitdeboole ] slt les pro j'ai un peti souci voila ce code est censer creer un fichier puis compte nom le nombre de caractere contenu dans ce fichier y compri les e calculs tableau [ par 3463 ] Salut à tous !! J'ai besoin de votre aide [^^happy13] Voici mon programme : # include # include # include # include # include # include # incl Tableau C [ par 3463 ] Salut à tous j'ai vraiment besoin de votre aide !! [code=cpp] # include # include # include # include # include # include # include using nam comparer deux fichiers & ecrire la difference dans un 3ème fichier. [ par zakadame ] bonjour, debutant en programmation en c, j'ai besoin de votre aide. je cherche un creer un petit programme pour comparer deux fichier txt et ecrire probleme d'allocation d'une matrice [ par emomar ] salut à tous voila j'ai un probleme avec la fonction remplir voila le code si quelqu'un peut m'aider merci code : [code=cpp]#include #include int n ecriture dans un fichier [ par cacoucatatonique ] bonjours,je me suis mis au laanguage C parcequ'a l'ecole j'ai un cours dessus, et je butte sur une erreur inconue.En faite mon probleme vien du fait q


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,398 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales