[C con Clase] salir de bucle, al pulsar enter.

Steven Davidson srd4121 en njit.edu
Mar Ago 18 17:12:48 CEST 2009


Hola Bien1,

bien1 wrote:
> gracias steven por la respuesta, pero no habra un mecanismo para
> hacerlo sin ayuda de librerias de terceros? y mas si no son
> estandares... por otro lado el uso de break y continue ya lo conocia,
> pero no veo en que modo me pueden ayudar a hacer lo que quiero. lo

Esto lo sugirió otro socio de la lista, pero me temo que no soluciona lo 
que quieres.

> que me gustaria es que printf o std::cout escriban por la salida
> estandar un texto en un bucle infinito, y para que detener ese bucle
> infinito ( para de escribir en pantalla) la condicion sea haber
> pulsado una tecla del teclado, pero de un modo completamente
> diferente a como estamos acostumbrados a verlo en los ejemplos, en
> los cuales la ejecucion se detiene para pedir la entrada de un
> caracter.
> 
> while (getchar != '\n') //una vez el control del programa pase a este punto
> // esperara hasta que tecleemos algo, o sea lo que no quiero que haga. 
> // quiero que continue sin pedir nada.
> {
>  printf ("mensaje\n");
> }
> 

Me temo que las bibliotecas estándares no te podrán ayudar para lo que 
quieres hacer. Como dije antes, las funciones estándares acerca de los 
canales (o flujos) de E/S leen la información desde el búfer del teclado 
y no las pulsaciones de las teclas directamente.

Lo más sencillo es usar bibliotecas no estándares pertenecientes a tu 
compilador y a tu plataforma. La otra solución es detener el programa 
para pedir datos. Si el usuario quiere detener el proceso, escribirá 
ENTER, sin más, y 'getchar()' retornará '\n'. Si el usuario quiere 
continuar, entonces escribirá otra cosa. Esto significa que el canal de 
entrada contendrá más de un carácter y por tanto deberías vaciarlo para 
que no interfiere con posteriores peticiones de caracteres.


Espero haber aclarado la duda.

Steven





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