ya un truc que je capte po avec scanf et les char [c] - C++ - Programmation
Marsh Posté le 19-11-2002 à 23:17:04
pcq scanf premier du nom ne tiens pas comte du retour chariot de la fin du premier chiffre  
 
essai: 
 
| Code : 
 | 
 
 
 
je c pas si c la methode propre mais ici ca marche ![]()
Marsh Posté le 19-11-2002 à 23:22:20
ah oui ca marche thx  
 
mais je capte po pkoi enfin le concept de ce phénoméne !!! 
 
 
Marsh Posté le 19-11-2002 à 23:25:15
| asphro a écrit a écrit  : ah oui ca marche thx mais je capte po pkoi enfin le concept de ce phénoméne !!! | 
 
 
très honnetement moi non plus, mais g diagnostiker kil avait un \n de trop ds le buffer ![]() (enfin ca c le pourkoi, mais scanf devrait le virer, ca ferai mieux)
 (enfin ca c le pourkoi, mais scanf devrait le virer, ca ferai mieux)
Marsh Posté le 19-11-2002 à 23:27:43
serieux je pige pas trop la !! 
 
je reste perplexe la dessus !! 
 
 
enfin peut-être qq'un va pouvoir me dire qu'elle en est vraiment la cause !! 
 
 
enfin bon sinon thx now je connais la bidouille ![]()
Marsh Posté le 19-11-2002 à 23:28:42
| asphro a écrit a écrit  : serieux je pige pas trop la !! je reste perplexe la dessus !! enfin peut-être qq'un va pouvoir me dire qu'elle en est vraiment la cause !! enfin bon sinon thx now je connais la bidouille | 
 
 
si ta d'autre bidouille, je suis l'expert... ![]()
Marsh Posté le 20-11-2002 à 00:20:09
essai getc sinon
Marsh Posté le 20-11-2002 à 05:59:20
un flushall(); avant chaque saisie ca regle pas ce genre de probleme...? c p-e pas tres propre... ![]() 
 
Marsh Posté le 20-11-2002 à 06:30:01
| Taz@PPC a écrit a écrit  : c po standard et ca veut rien dire de flusher un flux d'entrée | 
 ![]() 
  ![]() bah merde alors c'est ce qu'on nous apprends en cours... halala ces profs
 bah merde alors c'est ce qu'on nous apprends en cours... halala ces profs  ![]() 
   ![]() 
   ![]() 
  
bah je vais continué a  ![]() en cours alors
 en cours alors ![[:m300a] [:m300a]](https://forum-images.hardware.fr/images/perso/m300a.gif)
Marsh Posté le 20-11-2002 à 18:02:30
| Taz@PPC a écrit a écrit  : parce que le buffer contient '\n' qui passe dans c au scanf suivant. fo le vier en faisant une boucle | 
 
 
ah ok !!! 
thx pour l 'info
Marsh Posté le 21-11-2002 à 04:13:17
%f, %i, et %s demandent à scanf d'analyser la séquence d'entrée pour y reconnaitre quelquechose. Dès qu'il trouve un espace ou un \n, il s'arrête... et le laisse. 
Il suffit donc de lui dire de manger le séparateur attendu: scanf("%f %i\n",...)%c prends un caractère quel qu'il soit, y compris \n.
Marsh Posté le 21-11-2002 à 14:03:41
| Musaran a écrit a écrit  : %f, %i, et %s demandent à scanf d'analyser la séquence d'entrée pour y reconnaitre quelquechose. Dès qu'il trouve un espace ou un \n, il s'arrête... et le laisse. Il suffit donc de lui dire de manger le séparateur attendu: scanf("%f %i\n",...)%c prends un caractère quel qu'il soit, y compris \n. | 
 
 
g essayé en mettant le separateur a la fin du premier scanf, il passe jamais la main au second... ya k'en le mettant devant le second que ca passait
Marsh Posté le 22-11-2002 à 09:14:38
déclaration:fais un char op[20] ou un char *op et fais un calloc  
sur le nbre d'espace a reservé 
 
apres scanf("%s", op) 
sans le & 
je dis ptete une connerie mais c ce que g compris au tp que je viens de faire ![]() 
 
Marsh Posté le 22-11-2002 à 09:18:25
ah si c juste pr un operateur, dc 1 caractère: normal faut mettre %c et pas %s. 
 
char op; 
scanf("%c", &op); 
ca te mets un caractère ds op 
sinon, %s c'est une chaine de caractère, donc un tableau, dc un pointeur. donc tu le declares: 
char op[dim]; 
scanf("%s", op); 
 
ou  
char *op; 
op=calloc(dim,sizeof(char)); 
scanf("%s",op); 
 
ou dim est le nbre de caractere. 
 
bon, chuis pas un expert.
Marsh Posté le 22-11-2002 à 09:19:54
bah vi c skil a fait leirn rien a voir avec le \n a mon avis
Marsh Posté le 19-11-2002 à 23:07:28
voila un prog banal, mais je comprend pas pkoi avec un scanf(%c, op) il passe directement a l instruction suivante, de plus quand je demande d afficher la variable op, c un retour a la ligne ki apparait !!!