gcc il bogue :( [C++] - Programmation
Marsh Posté le 02-07-2002 à 00:38:18
fais un fflush(stdin) avant chacun de tes fgets() : c'est pour vider le tampon.
Marsh Posté le 02-07-2002 à 00:39:18
torpe23 a écrit a écrit : fais un fflush(stdin) avant chacun de tes fgets() : c'est pour vider le tampon. |
je vais essayer chef !
Marsh Posté le 02-07-2002 à 00:40:50
C pas un bug de gcc ca (bien qu'il y en ai)
c normal que ton printf a la fin ne s'affiche que si ya un \n c dans le fonctionnement de printf (cf man 3 printf) car il bufferise le maximum de données avant de les affiché ( quand il y a u \n ou un fflush(stdout))
sinon pour ton autre pb il peut facilement ce resoudre en faisant un fflush(stdin) pour vider l'entré standard de toutes les saloperies qui peuvent trainer (du genre un \n...)
Marsh Posté le 02-07-2002 à 00:42:58
DJ_Mulder a écrit a écrit : C pas un bug de gcc ca (bien qu'il y en ai) c normal que ton printf a la fin ne s'affiche que si ya un \n c dans le fonctionnement de printf (cf man 3 printf) car il bufferise le maximum de données avant de les affiché ( quand il y a u \n ou un fflush(stdout)) sinon pour ton autre pb il peut facilement ce resoudre en faisant un fflush(stdin) pour vider l'entré standard de toutes les saloperies qui peuvent trainer (du genre un \n...) |
OK d'accord merci
Mais c'est écrit nulle part ça comment j'aurais pu savoir ?
Marsh Posté le 02-07-2002 à 00:45:32
juju_le_barbare a écrit a écrit : OK d'accord merci ![]() Mais c'est écrit nulle part ça comment j'aurais pu savoir ? |
Probablement ecrit dans le Kernighan & Ritchie...
A+,
Marsh Posté le 02-07-2002 à 00:49:54
gilou a écrit a écrit : Probablement ecrit dans le Kernighan & Ritchie... A+, |
ben je l'ai pas encore ... euh ...
c'est en english c'est ça ? ça douille combien ?
Merci
Marsh Posté le 02-07-2002 à 03:19:37
L'est traduit en francais depuis des lustres.
A+,
Marsh Posté le 02-07-2002 à 10:07:25
gilou a écrit a écrit : L'est traduit en francais depuis des lustres. A+, |
Merci m'sieur...
Il va me coûter combien m'sieur ?
@++ m'sieur !
juju
Marsh Posté le 02-07-2002 à 10:11:56
juju_le_barbare a écrit a écrit : Merci m'sieur... Il va me coûter combien m'sieur ? |
Marsh Posté le 02-07-2002 à 10:53:09
torpe23 a écrit a écrit : fais un fflush(stdin) avant chacun de tes fgets() : c'est pour vider le tampon. |
fais un fflush(stdin) après chacun de tes fgets()
Marsh Posté le 02-07-2002 à 13:17:54
En théorie on ne flushe pas stdin,
ca n'a pas de sens pour le standard C.
apres on peut vouloir flusher pour avoir un comportement
non standard mais le comportement sur un flux quelconque
est non défini.
(stdin peut etre n'importe quoi, d'une entrée reseau, une redirection de la sortie d'un autre programme ou d'un fichier).
LeGreg
Marsh Posté le 02-07-2002 à 14:46:55
legreg a écrit a écrit : En théorie on ne flushe pas stdin, ca n'a pas de sens pour le standard C. apres on peut vouloir flusher pour avoir un comportement non standard mais le comportement sur un flux quelconque est non défini. (stdin peut etre n'importe quoi, d'une entrée reseau, une redirection de la sortie d'un autre programme ou d'un fichier). LeGreg |
Il n'y a pas de comportement général défini, néamoin il y en a un lorsque l'entré standard est le clavier: ca vide le buffer d'entrée. De même lorsqu'on redirige un ficheir vers l'entrée standard chaque ligne étant interprété comme une entrée clavier le flush fait passer à la ligne suivante.
Marsh Posté le 02-07-2002 à 00:31:45
Salut,
Dites donc gcc 2.96 et je pense qu'il a pas mal de bugs... Enfin je crois...
J'en ai cité un dans un post hier, et là j'ai presque le même, autre version !
Ici j'ai ma fonction main(), dedans je peux utiliser des printf() sans '\n' à la fin de la chaîne et ça marche impecc.
Seulement dans le prog ci-dessous :
1/ le 'Tant pis' ne s'affiche que si il y a '\n' à la fin, sinon il ne s'affiche pas. Ce bug n'affecte que les printf à la fin ou après le 'if' (ou switch pour mon ancien post),
donc le "salut la compagnie" s'affiche très bien sans son '\n'...
2/ Il affiche 'Alors il me faut la variable a (15 caractères) :\n' systématiquement, mais il ne me laisse pas saisir 'a', il affiche juste en dessous la suite, c'est-à-dire
'Alors il me faut la variable b (5 caractères) :', et je peux saisir 'b', ensuite 'c' et 'd' sans problème... mais pas 'a' !!!
Je voudrais savoir si il s'agit bien de bugs ou si c'est moi qui ai loupé quelque chose !
Vraiment il se passe des choses bizarres !
---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com