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

  FORUM HardWare.fr
  Programmation
  C++

  [C] - fonction fscanf() , probleme

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] - fonction fscanf() , probleme

n°162765
SquiiiD
be cool !
Posté le 19-06-2002 à 18:26:44  profilanswer
 

voila ce qu'il y a dans mon fichier :  
 
Benoit,A123
Vivi,A451
Zozo,A925
Bulma,B554

 
je souhaite séparer le nom, et le code dans 2 variable differentes.
 
Pour ce faire je procede comme suit :  
 

Code :
  1. while(feof(f_participants)==0)
  2. {
  3.    fscanf(f_participants,"%s,%s",NomLu,CodeLu);
  4.    printf("- %s\n",NomLu);
  5.    }


 
mais ca mar'che pas il me met toute la ligne dans la premiere variable NomLu ! pq?  
 
voici ce que j'obtiens :  
 
- Benoit,A123
- Vivi,A451
- Zozo,A925
- Bulma,B554

 
une idee? Merci d'avance !

mood
Publicité
Posté le 19-06-2002 à 18:26:44  profilanswer
 

n°162769
zi_ril_wan​ou
Posté le 19-06-2002 à 18:43:43  profilanswer
 

SquiiiD a écrit a écrit :

voila ce qu'il y a dans mon fichier :  
 
Benoit,A123
Vivi,A451
Zozo,A925
Bulma,B554

 
je souhaite séparer le nom, et le code dans 2 variable differentes.
 
Pour ce faire je procede comme suit :  
 

Code :
  1. while(feof(f_participants)==0)
  2. {
  3.    fscanf(f_participants,"%s,%s",NomLu,CodeLu);
  4.    printf("- %s\n",NomLu);
  5.    }


 
mais ca mar'che pas il me met toute la ligne dans la premiere variable NomLu ! pq?  
 
voici ce que j'obtiens :  
 
- Benoit,A123
- Vivi,A451
- Zozo,A925
- Bulma,B554

 
une idee? Merci d'avance !  




Quel est la valeur de retour de tes fscanf ???


---------------
Get the Cooool... Get the cool shoe-shine !
n°162773
SquiiiD
be cool !
Posté le 19-06-2002 à 18:48:17  profilanswer
 

Il me renvois 1
 
et si je ne m'abuse fscanf renvois le nombre de champs lu correctements non???  
 
comrpends po :(
 
vla le code complet  
 

Code :
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <malloc.h>
  4. #include <string.h>
  5. void main()
  6. {
  7. struct sParticipants
  8. {
  9.    char nom[20];
  10.    char combinaison[4];
  11.    struct sParticipants *pSuivant;
  12.    } *pPremier, *pCourant;
  13. char NomLu[20];
  14. char CodeLu[4];
  15. FILE *f_participants;
  16. FILE *f_gagnants;
  17. pPremier=(struct sParticipants*)malloc(sizeof(sParticipants));
  18. pCourant=pPremier;
  19. pCourant->pSuivant=NULL;
  20. f_participants=fopen("participants.txt","r" );
  21. f_gagnants=fopen("gagnants.txt","w+" );
  22. while(feof(f_participants)==0)
  23. {
  24.    fscanf(f_participants,"%s,%s",NomLu,CodeLu);
  25.    printf("- %s\n",NomLu);
  26.    }
  27. getch();
  28. }


 
PS: c un exercice pas fini ;)


Message édité par SquiiiD le 19-06-2002 à 18:48:51
n°162775
zi_ril_wan​ou
Posté le 19-06-2002 à 18:52:06  profilanswer
 

SquiiiD a écrit a écrit :

Il me renvois 1
 
et si je ne m'abuse fscanf renvois le nombre de champs lu correctements non???  
 
comrpends po :(
 
vla le code complet  
 

Code :
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <malloc.h>
  4. #include <string.h>
  5. void main()
  6. {
  7. struct sParticipants
  8. {
  9.    char nom[20];
  10.    char combinaison[4];
  11.    struct sParticipants *pSuivant;
  12.    } *pPremier, *pCourant;
  13. char NomLu[20];
  14. char CodeLu[4];
  15. FILE *f_participants;
  16. FILE *f_gagnants;
  17. pPremier=(struct sParticipants*)malloc(sizeof(sParticipants));
  18. pCourant=pPremier;
  19. pCourant->pSuivant=NULL;
  20. f_participants=fopen("participants.txt","r" );
  21. f_gagnants=fopen("gagnants.txt","w+" );
  22. while(feof(f_participants)==0)
  23. {
  24.    fscanf(f_participants,"%s,%s",NomLu,CodeLu);
  25.    printf("- %s\n",NomLu);
  26.    }
  27. getch();
  28. }


 
PS: c un exercice pas fini ;)  




 
avec  

Code :
  1. char CodeLu[5];


 
Ca donne quoi ???


---------------
Get the Cooool... Get the cool shoe-shine !
n°162778
SquiiiD
be cool !
Posté le 19-06-2002 à 18:55:00  profilanswer
 

La meme chose :'(

n°162780
SquiiiD
be cool !
Posté le 19-06-2002 à 18:56:12  profilanswer
 

sinon si y a un autre moyen de separer le nom et le code que fscanf je suis preneur ( sans passer par un algo pour decomposer tout ca )  
merci

n°162783
zi_ril_wan​ou
Posté le 19-06-2002 à 18:57:49  profilanswer
 

SquiiiD a écrit a écrit :

La meme chose :'(  




et avec  
 

Code :
  1. char CodeLu[20];


 
???


---------------
Get the Cooool... Get the cool shoe-shine !
n°162793
SquiiiD
be cool !
Posté le 19-06-2002 à 19:11:06  profilanswer
 

idem :(

n°162804
zi_ril_wan​ou
Posté le 19-06-2002 à 19:32:28  profilanswer
 

SquiiiD a écrit a écrit :

idem :(  




J'ai pas mon compilo C sous la patte malheureusement.
Sinon on va faire en sorte que ça marche, hein ?
1) Déja CodeLu[4] vu que tu veux y stocker 4 caractéres plus les \0 et autres \n, ça ne vas pas suffire.
 
2) fais plutôt fgets puis sscanf :
 

Code :
  1. char buffer[BUFSIZ];
  2. /*...*/
  3. while(feof(f_participants)==0)
  4. {
  5.   fgets(buffer,BUFSIZ,f_participants);
  6.   sscanf(buffer,"%s,%s",NomLu,CodeLu);
  7.   printf("- %s\n",NomLu);
  8.   }


 
3) Dis moi.


---------------
Get the Cooool... Get the cool shoe-shine !
n°162838
SquiiiD
be cool !
Posté le 19-06-2002 à 20:35:57  profilanswer
 

Meric mais jai resolu mon prob jai remplacer la virgule par un espace et ca tourne :)
 
merci a toi

mood
Publicité
Posté le 19-06-2002 à 20:35:57  profilanswer
 

n°162840
zi_ril_wan​ou
Posté le 19-06-2002 à 20:49:45  profilanswer
 

SquiiiD a écrit a écrit :

Meric mais jai resolu mon prob jai remplacer la virgule par un espace et ca tourne :)
 
merci a toi  




 
De rien mais je ne pige pas.
J'ai été soumis à un problème similaire (sauf '.' à la place de ',';) et ça a très bien marché !!!


---------------
Get the Cooool... Get the cool shoe-shine !
n°162845
SquiiiD
be cool !
Posté le 19-06-2002 à 21:07:16  profilanswer
 

Avec ton systeme??? je sais pas jai pas tester jai resolut mon prob avant, et la je v un peu arreter , je fais du C depuis midi ! lol j'ai la tete videe.
 
Merci encore et bonne soiree

n°162854
zi_ril_wan​ou
Posté le 19-06-2002 à 21:18:06  profilanswer
 

SquiiiD a écrit a écrit :

Merci encore et bonne soiree  




Encore une fois de rien !
A la prochaine  :hello:  
(j'espère que je serais plus efficace !)


---------------
Get the Cooool... Get the cool shoe-shine !
n°234122
Kortyburns
Posté le 24-10-2002 à 20:59:58  profilanswer
 

A mon avis, tu ne devrais JAMAIS mettre n'importe koi dans le scanf(ou fscanf).
 
en effet, dans la ligne  
[cpp] fscanf(f_participants,"%s,%s",NomLu,CodeLu);[cpp]
tu as mis une virgule dans le fscanf entre les deux "%s" : la tu a demandé a fscanf de virer toutes les virgules pendant la lecture. resultat des courses : toute ta ligne est dans Nomlu.
Voilà le probleme vient de la virgule.
 
je conseille a tous les programmeurs de ne JAMAIS mettre d'espaces ou n'importe quel caractere entre deux "balises" dans un scanf(ou fscanf)
 
C'est le genre de probleme qu'on fait une seule fois dans sa vie, car apres on s'en souvient !


---------------
Learn to live or live to learn ? Studies or not studies ?
n°234258
Musaran
Cerveaulté
Posté le 25-10-2002 à 05:08:40  profilanswer
 

Variantes de capture de chaîne:

"%10s"    //10 caractères, 11ème '\0' ajouté
"%[abc]"  //uniquement des 'a', 'b' ou 'c'
"%[^abc]" //pas les 'a', 'b' ou 'c'


Attention, feof n'est vrai que quand on a tenté de lire au-delà de la fin du fichier. Trop tard !
 
Testé qui marche:

Code :
  1. while(fscanf(f_participants,"%19[^,],%3s\n",NomLu,CodeLu) != EOF)
  2. printf("- %s\n",NomLu);


scanf est l'inverse de printf: le texte en dehors des formats doit correspondre, et est "sauté" en entrée.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone

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

  [C] - fonction fscanf() , probleme

 

Sujets relatifs
[ACCESS] Problème liaison avec word.[php] fonction delete
Modifier une entrée dans un fichier. / Mise en page / Fonction TempsProblème de TIMEOUT
une fonction en PHP qui met automatiquement tout en majuscule ?Résolution de problème...
[PHP - MySQL] Problème connexion BDD MySQL (résolu)[PHP - Adobd_Session - Oracle] Probleme de longueur de requete
Comment je peut résoudre mon problème(JSP-Tomcat)?debutant: 1er fonction----->resolue
Plus de sujets relatifs à : [C] - fonction fscanf() , probleme


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