[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