Esperar y cancelar ejecución al pulsar tecla C++

Aziwar

Buenas!

Quiero hacer 2 cosas..

  • La primera que antes de borrar la pantalla con system("clear"), el programa espere a que pulse intro. Actualmente lo tengo hecho de modo que espera que introduzca cualquier caracter y después pulse intro. Pero quiero hacerlo sin la necesidad de introducir ningún caracter,

  • La segunda, como puedo hacer para que un bucle se me ejecute continuamente hasta que yo pulse ESC?

LOc0

1)

printf("Pulsa INTRO para terminar\n"); 
   getchar();
   system("clear");

2) Un thread para el bucle (el principal) y otro para controlar la entrada de teclado. Variable global compartida entre los dos threads que compruebe el bucle en cada iteración. (En windows tb tienes la función kbhit() de la mítica (y maltratada) conio.h)

Salu2 ;)

Aziwar

1º No me funciona, pasa el getchar() como si nada.

2º Que es un thread? xD

LOc0

Prueba con:

printf("Pulsa INTRO\n");
while(getchar()!='\n');
getchar();
system("clear");

Y sobre los threads -> http://www.chuidiang.com/clinux/procesos/procesoshilos.php Resumiendo un hilo (thread en inglés) es como una "bifurcación" del flujo de tu programa que le permite hacer varias cosas "al mismo tiempo". A nivel de código es una función que se ejecutará en paralelo al flujo principal (como si fuera un proceso aparte pero no). Son muy usados en programas "de verdad", así que a empollar ;)

Salu2 ;)

Aziwar

nada.. no hay modo de hacer lo del intro

probé tambien poniendo cin.get() y nada

respecto a lo de los threads, no creo que sea lo que yo necesite, lo que necesito saber es como guardar en una variable o algo que pulsé la tecla escape. Despues sería un simple while. El rollo sería que cuando el sistema note que pulso ESC, le asigne a una variable el número 27 (código ASCII de ESC) pero no se como hacerlo, pq cuando pulso ESC directamente se queda esperando a que introduzca cualquier letra

B

con cin.get() tienes que meter algun carácter?

pd: cin.ignore(std::numeric_limits<streamsize>::max(),'\n' );

Aziwar

nada, todas esas opciones ni si quiera paran la ejecución, sigue directamente.

al final lo dejaré que sea introduciendo cualquier caracter..

Buffoncete

Joder hacía 2 ó 3 meses que no venía por esta sección.

usa getch();

BLZKZ

#2 por que le dices que use librerias de io de c en c++?

Yo lo hacia con cin.getline si no me equivoco ;)

bLaKnI

cin >> variable; ?

http://www.cplusplus.com/forum/articles/6046/

BLZKZ

#12 el problema de hacer eso es que luego puede que pilles mierda para hacer otro cin y tengas que poner un cin.ignore() detrás, de ahí que le aconseje el getline (cin, variable)

Usuarios habituales