[C con Clase] bucle infinito en do..while

Manuel L. notret en gmx.es
Mar Nov 16 21:18:38 CET 2010


Hola, Antonio:

A> Hoy en clase un compañero me mostró un curioso error, y estuve pensando a
A> qué podía ser debido.
A> El tema es, que con el siguiente codigo:
A> #include <iostream>
A> using namespace std;
A> int main() {
A> int num;
A> do{
A> fflush(stdin);
A> cout<<"\nIntroduzca un numero menor de 5";
A> cin>>num;
A> }while(num>5);
A> return 0;
A> }
A> ...
A> El problema viene al intentar controlar si meten un carácter.
A> ...
A> Supuse que quizás el problema era debido a que no limpiaba el buffer, pero
A> con fflush(stdin) sigue dando el mismo resultado

Tu suposición era correcta. ¿Por qué con fflush(stdin) sigue dando el mismo resultado? Pues porque el comportamiento de fflush en el estándar no está definido para los flujos de entrada, con lo que en cada compilador y/o plataforma se resuelve "como cuadre"...

Atentamente, Manuel L.


Más información sobre la lista de distribución Cconclase