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

  FORUM HardWare.fr
  Programmation
  C

  [C] pb avec fgets

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] pb avec fgets

n°496564
freds45
Posté le 25-08-2003 à 11:30:53  profilanswer
 

:hello: all
 
Voilà, pour être original :whistle: j'ai un souci avec fgets...
 
Déjà le morceau de code:
 

Code :
  1. t_coord saisie(signed char player, t_coup *coups)
  2. {
  3. t_coord saisie;
  4. int help = 0;
  5. char entree[2];
  6. saisie.x = DIM+1;
  7. saisie.y = DIM+1;
  8. while(!saisie_ok(coups, saisie, player))
  9. {
  10.   printf("joueur %d coord x? ", player+1);
  11.   fgets((char*)&entree, 2, stdin)
  12.   printf("\n" );
  13.   if(entree[0]=='h'||entree[0]=='H')
  14.   {
  15.    help++;
  16.    saisie.x = DIM+1;
  17.   }
  18.   else
  19.    saisie.x = atoi((char*)&entree);
  20.   printf("joueur %d coord y? ", player+1);
  21.   fgets((char*)&entree, 2, stdin)
  22.   printf("\n" );
  23.   if(entree[0]=='h'||entree[0]=='H')
  24.   {
  25.    help++;
  26.    saisie.y = DIM+1;
  27.   }
  28.   else
  29.    saisie.y = atoi((char*)&entree);
  30.   if(help==2)
  31.    showhint(coups, player);
  32.   return(saisie);
  33. }


 
Par contre le souci, c'est qu'il ne me demande rien pour le second fgets [:mlc] ! Avant je faisais avec un scanf et ca marchait impeccable, par contre il faut que je puisse lire soit un int (la coordonnée), soit un char (le 'h')...
 
J'ai fouillé un peu dans le forum, certains disent qu'il faut flusher le buffer d'entrée, mais ça n'a pas l'air très standard... :/
 
Qqun a une solution?
 :jap:


Message édité par freds45 le 25-08-2003 à 11:31:11

---------------
Filmstory : gardez trace des films que vous avez vu ! :D
mood
Publicité
Posté le 25-08-2003 à 11:30:53  profilanswer
 

n°496576
LetoII
Le dormeur doit se réveiller
Posté le 25-08-2003 à 11:37:47  profilanswer
 

Il te reste visiblement des caractères sur le flux d'entré dont \n
 
Soit tu le chope, soit tu flush (opération dont l'effet est indéfini sur les flux d'entrée si je me souvien bien)


Message édité par LetoII le 25-08-2003 à 11:40:46

---------------
Le Tyran
n°496581
freds45
Posté le 25-08-2003 à 11:39:30  profilanswer
 

LetoII a écrit :

Il te reste un caractère sur le flux d'entré: \n
 
Soit tu le chope, soit tu flush (opération dont l'effet est indéfini sur les flux d'entrée si je me souvien bien)


 
je fais comment?


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
n°496588
LetoII
Le dormeur doit se réveiller
Posté le 25-08-2003 à 11:42:46  profilanswer
 

freds45 a écrit :


 
je fais comment?


getc doit marcher.


---------------
Le Tyran
n°496595
freds45
Posté le 25-08-2003 à 11:45:49  profilanswer
 

j'ai rajouté
 

Code :
  1. getc(stdin);


 
après le fgets, et ça a l'air de marcher :jap: !


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
n°496606
freds45
Posté le 25-08-2003 à 11:52:14  profilanswer
 

finalement ça marche pas ! [:totoz]  
quand je rentre un 'h', il me refait logiquement un tour de boucle. J'entre les valeurs la 2ème fois, et ... rien [:wam]
 
Purée c'est nul! :cry:  
J'vais être obligé de repasser avec le '-1' pour le hint, c'est dommage :/


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
n°496633
Taz
bisounours-codeur
Posté le 25-08-2003 à 12:18:31  profilanswer
 

char entree[2];  
 
 
 
fgets((char*)&entree
 
 
ça doit meme pas compiler ton truc.
 
 
sinon passe par fgetc pour attraper un unique caractère, c'est plus simple
 
pour la gestion minu/majuscule, tu peux faire
 
 
if (toupper(c)=='H')
 
au lieu de tester et h et H

n°496640
freds45
Posté le 25-08-2003 à 12:23:41  profilanswer
 

Taz a écrit :

char entree[2];  
 
 
 
fgets((char*)&entree
 
 
ça doit meme pas compiler ton truc.
 
 
sinon passe par fgetc pour attraper un unique caractère, c'est plus simple
 
pour la gestion minu/majuscule, tu peux faire
 
 
if (toupper(c)=='H')
 
au lieu de tester et h et H


 
bah pourtant ça compilait  :whistle:  
Je vais voir avec fgetc :hello:


---------------
Filmstory : gardez trace des films que vous avez vu ! :D

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

  [C] pb avec fgets

 

Sujets relatifs
Probleme de retour a la ligne avec fgets( )...fgets
[programmation systeme] popen et fgets[C] Probleme fgets (resolu)
pb avec fgets[C] - fichiers et fgets (lire directement une ligne plus loins ....)
[C/C++ sous UNIX] problème de buffer avec fgets et cin !Questions sur fgets
[C] != entre fgets() et scanf()[C] comment "masquer" un scanf ou un fgets ?
Plus de sujets relatifs à : [C] pb avec fgets


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