Bonjour

J'ai le code suivant :
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <stdio.h>
 
#include <string.h>
 
#include <stdlib.h>
 
#define LGNOM 20                    /* longueur maxi d'un nom */
 
#define NBENFMAX 15                 /* nombre maxi d'enfants */
 
#define LNOMFICH 20                 /* longueur maxi nom de fichier */
 
 
 
main()
 
{  char nomfich [LNOMFICH+1] ;      /* nom du fichier à créer */
 
   FILE * sortie  ;                 /* descripteur fichier (niveau 2) */
 
   struct { char nom [LGNOM+1] ;
 
            int age ;               /* description d'un enregistrement */
 
            int nbenf ;                     /* du fichier */
 
            int agenf [NBENFMAX] ;
 
          } bloc ;
 
   int i ;
 
 
 
             /* ouverture fichier à créer */
 
             /* attention : mode d'ouverture w au lieu de wb dans certains cas */
 
   printf ("donnez le nom du fichier à créer : ") ;
 
   gets (nomfich) ;
 
   if ( (sortie = fopen (nomfich, "w")) == NULL )
 
      { printf ("***** erreur ouverture - abandon programme") ;
 
        exit(-1) ;
 
      }
 
 
 
             /* création du fichier à partir d'informations */
 
                     /* fournies au clavier */
 
   printf ("----- pour terminer la saisie, donnez un nom 'vide' ---\n") ;
 
   do
 
      { printf ("nom             : ") ;                    /* saisie nom */
 
        gets (bloc.nom) ;
 
        if ( strlen(bloc.nom) == 0) break ; /* sortie boucle si nom vide */
 
        printf ("age             : ") ;
 
        scanf ("%d", &bloc.age) ;                          /* saisie age */
 
        printf ("nombre enfants  : ") ;
 
        scanf ("%d", &bloc.nbenf) ;                 /* saisie nb enfants */
 
        for (i=0 ; i < bloc.nbenf && i < NBENFMAX ; i++)
 
           { printf ("age enfant no %d : ", i+1) ;     /* saisie age des */
 
             scanf ("%d", &bloc.agenf[i]) ;        /* différents enfants */
 
           }
 
        getchar() ;                                  /* pour éliminer \n */
 
        printf ("\n") ;
 
        fwrite (&bloc, sizeof(bloc), 1, sortie) ;    /* écriture fichier */
 
      }
 
   while (1) ;
 
 
 
             /* fin création */
 
   fclose(sortie) ;
 
   printf ("\n -------- FIN CREATION FICHIER ----------") ;
 
}
et bien sur lol, j'ai un probleme : qd j'ouvre mon fichier creer : je trouve le nom de la personne en texte puis ensuite : des caracteres aleatoire non lisible :s.. Je suis un peu perdu la

Avez vous trouvé mon erreur ?

Merci pour votre aide

PS : voici le resultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
karim ÿÿ5bÏ   ¸™pƒ8          Tÿ þK4 @          €ÿ    €ÿ pÿ Úa4        „ÿ €ÿ ¸Ema m ÿÿ5bÏ   ¸™pƒ8            K4 @          €ÿ    €ÿ pÿ Úa4        „ÿ €ÿ ¸