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 :

problème en fscanf


Sujet :

C

  1. #1
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Par défaut problème en fscanf
    je veut extraire des information d'un fichier pour l'enregistrer dans une structure. mais j'ai un problème après l'exécution:

    voila 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
    #include<stdio.h>
    #include<stdlib.h>
    #include<conio.h>
    #include<string.h>
    struct data_article {
           long code;
           char disignation[30];
           char famille;
           long code_fournisseur;
           long Prix_achat;
           };
    
    FILE *init_fichier();
    main(){
           FILE *fp; 
           struct data_article d;
           if (!(fp=init_fichier())) exit (0);
           fscanf(fp,"%ld%30c%c%ld%ld",&d.code,&d.disignation,&d.famille,&d.code_fournisseur,&d.Prix_achat);
           printf("%ld % s %c %ld %ld",d.code,d.disignation,d.famille,d.code_fournisseur,d.Prix_achat);
    
    fclose(fp);
    getch();
           }
    
    FILE *init_fichier(){
         FILE *fp;
    if (!(fp=fopen("d:\\tp\\article.txt","r"))){
                                            printf("le fechier n'existe pas");
                                            return(NULL);
                                            }
     return(fp);
    }
    voila le contenu de fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    63041 info-khyllou M 43318 300
    63042 info-khalilo  P 54307 200
    63043 info-khalil   M 27490 100
    voila le résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    63041 info-khyllou M 43318 300
    63041wse 2 4072592 4072496

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Avec %30c, tu lis 30 caractères systématiquement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
           fscanf(fp,"%ld%s%c%ld%ld",&d.code,d.disignation,&d.famille,&d.code_fournisseur,&d.Prix_achat);
    Tu dois lire le champ d.disignation sous la forme d'une chaîne de caractères %s, ce qui te permettra de
    - sauter les blancs qui précèdent la chaîne
    - s'arrêter au premier blanc qui suit
    - avoir dans la chaîne obtenue le '\0' terminal

    Par contre, lire le champ suivant, d.famille par %c va poser problème puisque tu vas lire le blanc qui le sépare du champ précédent. Il est préférable de le lire également avec %s, dans un tableau auxiliaire, puis de transférer le premier caractère du tableau dans d.famille

  3. #3
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Par défaut
    le résulta devient : 63041 info-khyllou M 4072592 4072496

  4. #4
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Quel est le code que tu utilises ?

Discussions similaires

  1. Problème avec fscanf
    Par lilmeth dans le forum Débuter
    Réponses: 8
    Dernier message: 23/05/2008, 13h56
  2. Problème avec fscanf, bug ?
    Par alainlc dans le forum Bibliothèque standard
    Réponses: 10
    Dernier message: 27/03/2008, 16h54
  3. Problème avec fscanf
    Par Bebert71 dans le forum C
    Réponses: 2
    Dernier message: 08/01/2007, 19h09
  4. Problème avec fscanf
    Par renlel dans le forum C++
    Réponses: 7
    Dernier message: 26/07/2006, 12h47
  5. problème de "fscanf"
    Par cout dans le forum C
    Réponses: 7
    Dernier message: 02/06/2006, 00h57

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