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 :

Blocage fwrite


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 24
    Par défaut Blocage fwrite
    Voila mon programme ! il compile (sans erreur) mais l'exécution se bloque quand elle arrive à " fwrite(&x,sizeof(abonne),1,f); "
    je ne sais pas quelle est l'erreur !!!!!!!

    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
    # include <stdio.h>
    # include <string.h>
    # include <conio.h>
    # include <stdlib.h>
     
    typedef struct 
    {
       char nom [20] ;
       char adresse [20];
       int nbpassage;                   /* pas encore payé */
       int num;
    }abonne;
     
    void creation ( abonne x, FILE *f)
    {
       int i=1;
       char c;
     
       do    
       {
          printf("donner le nom de %d eme abonnee :\n",i);
          scanf("%s",x.nom);
          printf("donner l'adresse de l'abonnee:\n");
          scanf("%s",x.adresse);
          printf("donner le nombre de passage non paye de l'abonnee:\n");
          scanf("%d",&x.nbpassage);
          printf("donner le numero de l'abonne dans le fichier \n");
          scanf("%d",&x.num);
          fwrite(&x,sizeof(abonne),1,f);
          i++;
          printf("voulez vous saisir un autre abonne  o/n:\n");
          c=getch();
       }while(c=='o'||c=='O');
     
       fclose(f);
    }
     
    int main ()
    {
       FILE *fichier;
       abonne a;
     
       fichier = fopen("c:/fichier.txt","w+");
       if ( fichier = NULL )
       {
          printf("fichier inexitant !");
          exit(1);
       }
       else
       {
          creation(a,fichier);
       }
    }
    SVP comment résoudre ce pb ?

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    c'est probablement == ...

    Ne pas utiliser scanf() si on est pas un expert en la matière.

    Ca ne coute pas tellement plus cher d'écrire du code correct, et sûr...
    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
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <ctype.h>
     
    typedef struct
    {
       char nom[20];
       char adresse[20];
       int nbpassage;               /* pas encore payé */
       int num;
    }
    abonne;
     
    static void fclean (char *s, FILE * fp)
    {
       char *p = strchr (s, '\n');
     
       if (p != NULL)
       {
          *p = 0;
       }
       else
       {
          int c;
     
          while ((c = getc (fp)) != '\n' && c != EOF)
          {
          }
       }
    }
     
     
    void creation (FILE * f)
    {
       int i = 1;
       char s[16];
       do
       {
          abonne x = { 0 };
     
          printf ("donner le nom de %d eme abonnee :\n", i);
          fgets (x.nom, sizeof x.nom, stdin);
          fclean (x.nom, stdin);
     
          printf ("donner l'adresse de l'abonnee:\n");
          fgets (x.adresse, sizeof x.adresse, stdin);
          fclean (x.adresse, stdin);
     
          printf ("donner le nombre de passage non paye de l'abonnee:\n");
          fgets (s, sizeof s, stdin);
          fclean (s, stdin);
          x.nbpassage = (int) strtol (s, NULL, 10);
     
          printf ("donner le numero de l'abonne dans le fichier \n");
          fgets (s, sizeof s, stdin);
          fclean (s, stdin);
          x.num = (int) strtol (s, NULL, 10);
     
          fwrite (&x, sizeof (abonne), 1, f);
          i++;
     
          printf ("voulez vous saisir un autre abonne  o/n:\n");
          fgets (s, sizeof s, stdin);
          fclean (s, stdin);
       }
       while (tolower (s[0]) == 'o');
     
       fclose (f);
    }
     
     
    int main (void)
    {
       int ret = EXIT_SUCCESS;
       FILE *fichier = fopen ("fichier.txt", "ab");
     
       if (fichier == NULL)
       {
          printf ("fichier inexistant !");
          ret = EXIT_FAILURE;
       }
       else
       {
          creation (fichier);
          fclose (fichier), fichier = NULL;
       }
       return ret;
    }
    Pose des questions si tu ne comprends pas.

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

Discussions similaires

  1. [WIN2000][JAVA]blocage de l'application
    Par narmataru dans le forum InterBase
    Réponses: 9
    Dernier message: 09/12/2003, 13h07
  2. [CVS] "blocage" de ressource ?
    Par xa1 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 06/10/2003, 16h26
  3. Blocage à 60 images par seconde
    Par houssa dans le forum OpenGL
    Réponses: 5
    Dernier message: 24/06/2003, 08h52
  4. [Kylix] Blocage Kylix 3
    Par DevX dans le forum EDI
    Réponses: 2
    Dernier message: 13/11/2002, 20h29
  5. fwrite et fread
    Par bohemianvirtual dans le forum C
    Réponses: 5
    Dernier message: 05/06/2002, 12h24

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