"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Je ne suis pas sûr que ce soit tellement le cas en C++, car c'est justement le genre de problème qui m'avait dissuadé d'utiliser les flux standard C++ (je ne connaissais pas l'équivalent C++ de fflush() à l'époque).
D'un autre côté, c'était sous Visual 6, donc...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
A ma connaissance:
<HS>
</HS>
Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #include <iostream> /* ... */ int nombre; std::cout << "Entrez un nombre entre 1 et 10: " /* << std::flush n'est pas necessaire ici */ while (!(std::cin >> nombre) || nombre < 1 || nombre > 10) { /* Mon code en cas d'erreur */ }
Dans ce code, l'invite est garantie de s'afficher à cause de la lecture sur le flux std::cin (il faut que je retrouve la référence). Pour un affichage équivalent en C, il faut appeler fflush(stdout):
Thierry
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 printf("Entrez un nombre entre 1 et 10: "); fflush(stdout);
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Comment interpreteriez-vous cet extrait de la norme?
ThierryWhen a stream is line buffered, characters are intended to be transmitted to or from the host environment as a block when a new-line character is encountered. Furthermore, characters are intended to be transmitted as a block to the host environment when a buffer is filled, when input is requested on an unbuffered stream, or when input is requested on a line buffered stream that requires the transmission of characters from the host environment. Support for these characteristics is implementation-defined, and may be affected via the setbuf and setvbuf functions.
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
En effet, c'est bizarre et difficile à comprendre.
Mais je trouve encore plus étrange qu'une lecture sur un stream provoque le flush d'un autre stream...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
[Warning: C++ detected] Cette fonctionnalité est implantée dans basic_istream. L'objet std::cin (qui permet de lire sur le flux d'entrée associé à stdin) est lié à l'object std::cout (qui permet d'écrire sur le flux associé à stdout). Ainsi, une saisie à l'aide de cin force la purge du tampon du flux associé à std::cout et c'est garantit par la norme.
En ce qui concerne la situation en C, je n'ai pas l'ouvrage de Braquellaire. A ma connaissance, les événements qui permettent de purger le tampon de stdout sont:
- Le tampon est plein
- Présence d'un caractère de fin de ligne
- Appel de fflush(stdout)
L'extrait de la norme posté plus haut n'est pas clair pour moi.
Thierry
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager