IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Probleme avec fread ou fwrite.. binaire pas lisible ?


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 66
    Points : 26
    Points
    26
    Par défaut Probleme avec fread ou fwrite.. binaire pas lisible ?
    bonjour,
    Pour réviser un peu j'ai voulu me faire un programme très simple utilisant fread et fwrite... pour prendre une structure d'un fichier, la mettre en binaire dans un autre fichier, prendre ce binaire, le mettre en texte dans un fichier et la lire, voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
     
    #include <stdio.h>
    #include <stdlib.h>
    #define MAXN 10
    #define MAXP 10
     
    struct etud_s // la structure d'un étudiant
    {
    	char nom[MAXN];
    	char prenom[MAXP];
    };
     
    struct etud_s tabetud;  //la structure qui me servira pour lire et ecrire
     
    void edition ( struct etud_s tab, char filename[] ) // pour écrire dans tabetud
    {
    	FILE *datei;
    	datei=fopen ( filename,"w" );
     
    	printf ( "\ndonner le nom\n" ); // on met tout simplement ce que l'on veut dans tabetud
    	scanf ( "%s",&tab.nom );
    	fprintf ( datei,"%s\t",tab.nom );
    	printf ( "donner le prenom\n" );
    	scanf ( "%s",&tab.prenom );
    	fprintf ( datei,"%s",tab.prenom ); // sauvegarde dans un fichier.txt OK
    	fclose ( datei );
    }
     
    void speicher ( char output[],char input[] ) // enregistrement en binaire
    {
     
    	FILE *foutput;
    	FILE *finput;
    	foutput=fopen ( output,"wb" ); 
    	finput=fopen ( input,"rb" ); // on prends notre fichier txt
     
    	fwrite ( finput, sizeof ( struct etud_s ),1,foutput ); //on crée le binaire avec simplement ma structure
    }
     
    void lecture ( char input[], char output[],struct etud_s etud ) // pour lire à partir du binaire.. c'est LA que ça foire
    {
    	FILE *finput;
    	FILE *foutput;
    	finput=fopen ( input,"rb" ); // j'ouvre mon binaire et je vais créer un .txt
    	foutput=fopen ( output,"wb" );
    	fread ( finput, sizeof ( struct etud_s ),1,foutput ); //je lis donc depuis mon binaire une structure, et je la met dans un .txt
    	fscanf ( foutput, "%s",&etud.nom ); // pour afficher ensuite le .txt
    	fscanf ( foutput,"%s",&etud.prenom );
    	printf ( "\n le nom est : %s",etud.nom );
    	printf ( "\n leprenom est : %s",etud.prenom );
    }
     
    int main()
    {
    	edition ( tabetud,"edition" ); // edition contient bien ce que j'ai mis dans tabetud
    	speicher ( "speicher","edition" ); //speicher contient "quelque chose" du binaire donc !
    	lecture ( "speicher","lecture",tabetud ); //lecture ne contient rien.. la lecture ne se fait donc pas bien...
     
    	return EXIT_SUCCESS;
    }
    je précise que je n'ai pas fait de teste d'ouverture de fichier pour aller plus vite car je suis certain qu'il n'y a pas de soucis là dessus, j'utilise vraissemblablement mal fread ou fwrite... mais où j'ai remanié tout ça toute la soirée sans trouver mon erreur...

    merci

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    fread permet de lire des données depuis un fichier pour les stocker en mémoire.
    fwrite permet d'écrire des données en mémoire dans un fichier.
    (voir leur man)

    or dans le code, on voit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fwrite ( finput, sizeof ( struct etud_s ),1, foutput ); //on crée le binaire avec simplement ma structure
    /* ... */
    fread ( finput, sizeof ( struct etud_s ),1,foutput ); //je lis donc depuis mon binaire une structure, et je la met dans un .txt
    on donne un fichier comme paramètre là où les fonctions attendent un pointeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fwrite ( &tabetud, sizeof tabetud, 1, foutput ); 
    /* ... */
    fread ( &tabetud, sizeof tabetud, 1, finput );

    Sinon, lors des appels à scanf le derneir paramètre à l'air louche.

    Citation Envoyé par titimoi Voir le message
    je précise que je n'ai pas fait de teste d'ouverture de fichier pour aller plus vite car je suis certain qu'il n'y a pas de soucis là dessus
    Je ne pense pas comme toi, il ne faut pas avoir peur d'aller un peu moins vite pour faire les choses mieux.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 613
    Points : 406
    Points
    406
    Par défaut
    Citation Envoyé par titimoi Voir le message
    je précise que je n'ai pas fait de teste d'ouverture de fichier pour aller plus vite car je suis certain qu'il n'y a pas de soucis là dessus
    Très mauvaise idée. Un jour tu perdra plus de temps a chercher ton erreur qui sera que ton fichier s'est pas ouvert (et il peut y avoir beaucoup de raison pour lesquelles l'ouverture d'un fichier écohue), que le temps gagné a ne pas écrire le test.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 66
    Points : 26
    Points
    26
    Par défaut
    merci pour les réponses, je m'attendais à ce genre de réponse pour les erreurs, je n'épiloguerais pas dessus.(j'ai rajouté au cas où une erreur.. mais ce n'est pas ça...)

    Concernant le pointeur pour fread et fscan c'est en effet la chose qui me posais problème, le fait est que rien ne change (dans mes problème lorsque je donne une adresse à la place du fichiers lu, si ce n'est que maintenant le fichier speicher ne contient rien... d'où un problème dans fwrite dans la fonction speicher.. voici mon code modifié :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    void speicher ( char output[],struct etud_s tabetud )
    {
     
    	FILE *foutput;
    	foutput=fopen ( output,"wb" );
    if (foutput==0)
    fprintf(stderr,"probleme lors de l'ouverture de %s\n",output);
    else{
    	fwrite ( &tabetud, sizeof ( struct etud_s ),1,foutput );
           }
    }
     
    void lecture ( char input[] /*char output[]*/,struct etud_s tabetud )
    {
    	FILE *finput;
    	finput=fopen ( input,"rb" );
    	fread ( &tabetud, sizeof ( struct etud_s ),1,finput );
    	printf ( "\n le nom est : %s",tabetud.nom );
    	printf ( "\n leprenom est : %s",tabetud.prenom );
    }
     
    int main()
    {
    	edition ( tabetud,"edition" );
    	speicher ( "speicher",tabetud );
    	lecture ( "speicher",tabetud );
     
    	return EXIT_SUCCESS;
    }

  5. #5
    Invité(e)
    Invité(e)
    Par défaut
    Après, il faut aussi vérifier que la variable tabetud est à la fois globale et passée en paramètres à speicher...

    Quand tu donne cette variable en paramètre à édition, elle est passée par copie est rien n'est donc écrit dedans...

    Retire cette variable globale qui ne sert à rien, remplace le prototype de tes fonctions : passe un pointeur plutôt qu'une structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    void edition (struct etud_s * tab, char filename[])
    {
        /* à remplir */
    }
    
    void speicher(char output[],  struct etud_s * tab)
    {
        /* à remplir */
    }
    
    void lecture(char input[],  struct etud_s * tab)
    {
        /* à remplir */
    }
    
    int main(void)
    {
        struct etud_s tabetud;
        edition(&tabetud, "edition");
        speicher("speicher", &tabetud);
        lecture("speicher", &tabetud);
    
        return EXIT_SUCCESS;
    }
    merci pour les réponses, je m'attendais à ce genre de réponse pour les erreurs, je n'épiloguerais pas dessus.(j'ai rajouté au cas où une erreur.. mais ce n'est pas ça...)
    Si tu lis bien, tu verras qu'on a pas dit que l'erreur venait de là. On dit juste qu'il n'est jamais trop tôt pour prendre de bonnes habitudes.

    EDIT :
    Dans les prototypes, il faut lire des '*' et pas des '&', qui n'a rien à voir puisse que c'est du c++.
    Dernière modification par Invité(e) ; 16/01/2009 à 10h42. Motif: Les touches & et * se ressemblent vachement

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 66
    Points : 26
    Points
    26
    Par défaut
    Concernant la variable globale tabetud, il est écris quelque chose dedans puisque je m'en sert dans edition et dans lecture, elle est donc necessaire.

    Si je mets dans les paramètres de mes fonctions des j'ai des erreurs de compilations de type :

    error: expected ')' before '&' token
    que je ne comprend pas, du coup j'ai mis des *tab, et voici mon code avec le rajout de tabfinal:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    #include <stdio.h>
    #include <stdlib.h>
    #define MAXN 10
    #define MAXP 10
     
     
     
    struct etud_s
    {
    	char nom[MAXN];
    	char prenom[MAXP];
    };
     
    struct etud_s tabetud;
    struct etud_s tabfinal;//ici rajout de tabfinal
     
    void edition ( struct etud_s *tab, char filename[] )
    {
    	FILE *datei;
    	datei=fopen ( filename,"w" );
     
    	printf ( "\ndonner le nom\n" );
    	scanf ( "%s",(*tab).nom );
    	fprintf ( datei,"%s\t",(*tab).nom );
    	printf ( "donner le prenom\n" );
    	scanf ( "%s",(*tab).prenom );
    	fprintf ( datei,"%s",(*tab).prenom );
    	fclose ( datei );
    }
     
    void speicher ( char output[],struct etud_s *tab )
    {
     
    	FILE *foutput;
    	foutput=fopen ( output,"wb" );
     
    if (foutput==0)
    fprintf(stderr,"probleme lors de l'ouverture de %s\n",output);
    else
    {
     
    	fwrite ( tab, sizeof ( struct etud_s ),1,foutput );
    }
    }
    void lecture ( char input[] ,struct etud_s *tab )
    {
    	FILE *finput;
    	finput=fopen ( input,"rb" );;
    	fread ( tab, sizeof ( struct etud_s ),1,finput );
    	printf ( "\n le nom est : %s",(*tab).nom );
    	printf ( "\n leprenom est : %s",(*tab).prenom );
    }
     
    int main()
    {
    	edition ( &tabetud,"edition" );
    	speicher ( "speicher",&tabetud );
    	lecture ( "speicher",&tabfinal );
     
    	return EXIT_SUCCESS;
    }

    Comment ça se fait que dans mon fichier speicher, ce ne soit pas du binaire, mais du texte, avec [nom][prenom] d'écris ?? il doit y avoir un soucis de ce côté là

  7. #7
    Invité(e)
    Invité(e)
    Par défaut
    Citation Envoyé par titimoi Voir le message
    Si je mets dans les paramètres de mes fonctions des j'ai des erreurs de compilations de type :
    Oui, mea culpa, il fallait lire '*' et pas '&'. (habitude du c++).

    Concernant la variable globale tabetud, il est écris quelque chose dedans puisque je m'en sert dans edition et dans lecture, elle est donc necessaire.
    Pas si tu la déclare dans la fonction main.

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 66
    Points : 26
    Points
    26
    Par défaut
    Au temps pour moi je ne l'avais pas compris comme cela, le problème reste entier.. et j'ai des choses très bizarres :

    ./etud

    donner le nom
    nom
    donner le prenom
    prenom

    le nom est : 
    leprenom est : @
    cat speicher
    nomPprenomP�]
    cat edition
    nom prenom
    speicher écrit n'importe quoi.. et ce n'est pas du binaire...

    edit mon code actuel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    #include <stdio.h>
    #include <stdlib.h>
    #define MAXN 10
    #define MAXP 10
     
     
     
    struct etud_s
    {
    	char nom[MAXN];
    	char prenom[MAXP];
    };
     
    void edition ( struct etud_s *tab, char filename[] )
    {
    	FILE *datei;
    	datei=fopen ( filename,"w" );
     
    	printf ( "\ndonner le nom\n" );
    	scanf ( "%s", ( *tab ).nom );
    	fprintf ( datei,"%s\t", ( *tab ).nom );
    	printf ( "donner le prenom\n" );
    	scanf ( "%s", ( *tab ).prenom );
    	fprintf ( datei,"%s", ( *tab ).prenom );
    	fclose ( datei );
    }
     
    void speicher ( char output[],struct etud_s *tab )
    {
     
    	FILE *foutput;
    	foutput=fopen ( output,"wb" );
     
    	if ( foutput==0 )
    		fprintf ( stderr,"probleme lors de l'ouverture de %s\n",output );
    	else
    	{
     
    		fwrite ( tab, sizeof ( struct etud_s ),1,foutput );
    	}
    }
    void lecture ( char input[] ,struct etud_s *tab )
    {
    	FILE *finput;
    	finput=fopen ( input,"rb" );;
    	fread ( tab, sizeof ( struct etud_s ),1,finput );
    	printf ( "\n le nom est : %s", ( *tab ).nom );
    	printf ( "\n leprenom est : %s\n", ( *tab ).prenom );
    }
     
    int main()
    {
    	struct etud_s tabetud;
    	struct etud_s tabfinal;
     
    	edition ( &tabetud,"edition" );
    	speicher ( "speicher",&tabetud );
    	lecture ( "speicher",&tabfinal );
     
    	return EXIT_SUCCESS;
    }

  9. #9
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par titimoi Voir le message
    edit mon code actuel :
    Tu peux déjà corriger ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    -------------- Build: Debug in hello ---------------
     
    Compiling: main.c
    Linking console executable: bin\Debug\hello.exe
    C:\dev\hello\main.c:50: warning: function declaration isn't a prototype
    C:\dev\hello\main.c: In function `main':
    C:\dev\hello\main.c:54: warning: passing arg 2 of `edition' discards qualifiers from pointer target type
    C:\dev\hello\main.c:55: warning: passing arg 1 of `speicher' discards qualifiers from pointer target type
    C:\dev\hello\main.c:56: warning: passing arg 1 of `lecture' discards qualifiers from pointer target type
    Output size is 21.50 KB
    Process terminated with status 0 (0 minutes, 0 seconds)
    0 errors, 4 warnings
    Ensuite, il manquait la fermeture des fichiers...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    #include <stdio.h>
    #include <stdlib.h>
    #define MAXN 10
    #define MAXP 10
     
    struct etud_s
    {
       char nom[MAXN];
       char prenom[MAXP];
    };
     
    void edition (struct etud_s *tab, char const filename[])
    {
       FILE *datei = fopen (filename, "w");
       if (datei != NULL)
       {
          printf ("\ndonner le nom\n");
          scanf ("%s", tab->nom);
          fprintf (datei, "%s\t", tab->nom);
          printf ("donner le prenom\n");
          scanf ("%s", tab->prenom);
          fprintf (datei, "%s", tab->prenom);
          fclose (datei);
       }
       else
       {
          perror (filename);
       }
    }
     
    void speicher (char const output[], struct etud_s *tab)
    {
       FILE *foutput = fopen (output, "wb");
     
       if (foutput != 0)
       {
          fwrite (tab, sizeof (struct etud_s), 1, foutput);
          fclose (foutput);
       }
       else
       {
          perror (output);
       }
    }
    void lecture (char const input[], struct etud_s *tab)
    {
       FILE *finput = fopen (input, "rb");
       if (finput != NULL)
       {
          fread (tab, sizeof (struct etud_s), 1, finput);
          printf ("\n le nom est : %s", tab->nom);
          printf ("\n leprenom est : %s\n", tab->prenom);
          fclose (finput);
       }
       else
       {
          perror (input);
       }
    }
     
    int main (void)
    {
       struct etud_s tabetud;
       struct etud_s tabfinal;
     
       edition (&tabetud, "edition");
       speicher ("speicher", &tabetud);
       lecture ("speicher", &tabfinal);
     
       return EXIT_SUCCESS;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    donner le nom
    aaa
    donner le prenom
    bbb
     
     le nom est : aaa
     leprenom est : bbb
     
    Process returned 0 (0x0)   execution time : 3.097 s
    Press any key to continue.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 66
    Points : 26
    Points
    26
    Par défaut
    ah j'utilise kdevelop et il ne me donne pas d'erreur ou de warning, je vais tenter de voir ce qui ne va pas (je ne connais pas bien le type de warning que me renvoie ton compileur)

    edit: non en fait je ne vois pas le problème étant donné que mes fichiers sont bien créé, en revanche ne pouvant tester avec ton compileur, il me paraît difficile de tâtonner... pour trouver le problème que tu me fais resortir,

  11. #11
    Invité(e)
    Invité(e)
    Par défaut
    En fermer la fichier output, ça va mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void speicher(char output[], struct etud_s *tab)
    {
        FILE *foutput;
        foutput = fopen(output, "wb");
     
        if (foutput == NULL)
            perror(output);
        else {
            fwrite(tab, sizeof *tab, 1, foutput);
            fclose(foutput);
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    donner le nom
    foo
    donner le prenom
    bar
     
     le nom est : foo
     leprenom est : bar

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 66
    Points : 26
    Points
    26
    Par défaut
    on va finir par y arriver ! merci beaucoup ça fonctionne, (même si je suis toujours surpris par ce que contient mon fichier speicher)

    merci encore pour votre aide

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 66
    Points : 26
    Points
    26
    Par défaut
    c'est tout à fait ça.. erreur de débutant, je ne pense pas à fermer les fichiers... ça rentrera comme ça. merci à tous les deux, c'est résolu

  14. #14
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par titimoi Voir le message
    ah j'utilise kdevelop et il ne me donne pas d'erreur ou de warning, je vais tenter de voir ce qui ne va pas (je ne connais pas bien le type de warning que me renvoie ton compileur)

    edit: non en fait je ne vois pas le problème étant donné que mes fichiers sont bien créé, en revanche ne pouvant tester avec ton compileur, il me paraît difficile de tâtonner... pour trouver le problème que tu me fais resortir,
    Mon compilateur est le même que le tient (MinGW, version de gcc pour Windows). Simplement, il est configuré correctement :

    http://emmanuel-delahaye.developpez....tm#cfg_compilo

  15. #15
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par titimoi Voir le message
    (même si je suis toujours surpris par ce que contient mon fichier speicher)
    Il contient exctement l'image mémoire des données. Évidemment, ce n'est pas portable...

    http://emmanuel-delahaye.developpez....m#enreg_struct

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 66
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Il contient exctement l'image mémoire des données. Évidemment, ce n'est pas portable...

    http://emmanuel-delahaye.developpez....m#enreg_struct
    je m'attendais plus à des trucs incompréhensibles qu'a des bouts de mes "nom" et "prenom" en plus de trucs incompréhensibles !

  17. #17
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par titimoi Voir le message
    je m'attendais plus à des trucs incompréhensibles qu'a des bouts de mes "nom" et "prenom" en plus de trucs incompréhensibles !
    Essaye comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    int main (void)
    {
       struct etud_s tabetud = {0};
       struct etud_s tabfinal = {0};
     
       edition (&tabetud, "edition");
       speicher ("speicher", &tabetud);
       lecture ("speicher", &tabfinal);
     
       return EXIT_SUCCESS;
    }
    Et ce sera encore plus clair !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problèmes avec Fread et Fwrite
    Par Sotoaleono dans le forum C
    Réponses: 1
    Dernier message: 17/02/2015, 10h00
  2. Probleme avec gets - On n'a pas le temps de saisir la chaine
    Par thomas_moore dans le forum Débuter
    Réponses: 3
    Dernier message: 29/10/2010, 13h13
  3. probleme avec fread
    Par supercyprien dans le forum Débuter
    Réponses: 1
    Dernier message: 21/06/2010, 00h30
  4. [PHP-JS] Probleme avec onchange qui ne redirige pas
    Par Greggggggg dans le forum Langage
    Réponses: 11
    Dernier message: 28/07/2006, 12h43
  5. probleme avec fread
    Par booby dans le forum C
    Réponses: 10
    Dernier message: 06/04/2006, 17h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo