Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1338 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Problème avec fscanf

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème avec fscanf

n°1380786
mifinoufou
Posté le 04-06-2006 à 15:10:34  profilanswer
 

Bonjour, j'ai un petit problème de segmentation fault lorsque j'utilise fscanf et je ne comprends pas pourquoi. Voici tout d'abord la partie du code posant problème :
 

Code :
  1. FILE *fic=fopen(file,"r" );
  2. char ss[500];
  3. printf("Debut du chargement\n" );
  4. fscanf(fic,"%s",ss);
  5. printf("Fin de lecture\n" );
  6. printf("%s\n",ss);


 
Le segmentation fault se produit sur le fscanf (il y a juste "Debut du chargement" d'affiché).
Si, au lieu d'utiliser fscanf, j'utilise scanf et que je lance mon programme en redirigeant la sortie du fichier sur l'entrée standart de mon programme (prog < "nom du fichier" ) cela fonctionne sans problème. Pourquoi cela ne fonctionne pas en utilisant fscanf ?
 
Merci pour vos futures réponses

mood
Publicité
Posté le 04-06-2006 à 15:10:34  profilanswer
 

n°1380787
aipsy0783
Posté le 04-06-2006 à 15:15:31  profilanswer
 
n°1380796
Emmanuel D​elahaye
C is a sharp tool
Posté le 04-06-2006 à 15:28:51  profilanswer
 

mifinoufou a écrit :

Bonjour, j'ai un petit problème de segmentation fault lorsque j'utilise fscanf et je ne comprends pas pourquoi. Voici tout d'abord la partie du code posant problème :


Tu ne vérifies pas si file s'est ouvert correctement. Tout peut arriver...
 
Ceci fonctionne chez moi. Evidemment fscanf() utilisé comme ça ne prend qu'un mot à la fois...

Code :
  1. #include <stdio.h>
  2. int main (void)
  3. {
  4.    char const *file = "corbeau.txt";
  5.    FILE *fic = fopen(file, "r" );
  6.    if (fic != NULL)
  7.    {
  8.       char ss[500];
  9.       printf("Debut du chargement\n" );
  10.       fscanf(fic, "%s", ss);
  11.       printf("Fin de lecture\n" );
  12.       printf("%s\n", ss);
  13.    }
  14.    else
  15.    {
  16.       perror (file);
  17.    }
  18.    return 0;
  19. }


Pour lire tous les mots un par un, il suffit de boucler :  

Code :
  1. #include <stdio.h>
  2. int main (void)
  3. {
  4.    char const *file = "corbeau.txt";
  5.    FILE *fic = fopen(file, "r" );
  6.    if (fic != NULL)
  7.    {
  8.       char ss[500];
  9.       printf("Debut du chargement\n" );
  10.       while (fscanf(fic, "%499s", ss) == 1)
  11.       {
  12.          printf("%s\n", ss);
  13.       }
  14.       printf("Fin de lecture\n" );
  15.    }
  16.    else
  17.    {
  18.       perror (file);
  19.    }
  20.    return 0;
  21. }


Message édité par Emmanuel Delahaye le 04-06-2006 à 15:30:00

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1380798
mifinoufou
Posté le 04-06-2006 à 15:30:28  profilanswer
 

Je viens de lire le sujet ci dessus mais cela ne me dit pas comment résoudre mon problème seg fault.
C'est bien la fonction fscanf que j'ai besoin, fgets ne suffit pas pour mon problème (par la suite je veux utiliser des choses du genre fscanf(fic,"debut %x",n) afin de vérifier que ce qu'il y a dans le fichier correspond bien à ce qu'il doit y avoir).
 
Je pourrais modifier stdin afin qu'il devienne mon descripteur de fichier mais je pense que fscanf devrait marcher sans cette bidouille...

n°1380800
mifinoufou
Posté le 04-06-2006 à 15:31:42  profilanswer
 

Nos messages se sont croisés... Je vais vérifier si le fichier est bien ouvert. Merci

n°1380808
mifinoufou
Posté le 04-06-2006 à 15:37:06  profilanswer
 

C'est bon, merci beaucoup :-). Encore un petite erreur qui m'aurat fait perdre pas mal de temps...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Problème avec fscanf

 

Sujets relatifs
[Résolu] Problème MySQL 1&1 : plus de protection de chaine !Problème excel... [RESOLU]
Gros problème de liens dans mon site..Probleme sur DataGridView sous VB DotNet
[jsp] problème sur un useBeanProbleme validation xhtml
Problème en Accessprobleme avec fscanf et EOF
[C] - fonction fscanf() , probleme[C++] problème de fscanf : comment faire de l'alloc dyna de mem ?
Plus de sujets relatifs à : Problème avec fscanf


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR