Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Salir de un While pulsando la tecla Escape

Estas en el tema de Salir de un While pulsando la tecla Escape en el foro de C/C++ en Foros del Web. Hola a todos: Tengo este codigo, y quiero que se ejecute mientos no pulse la tecla escape. int main(void) { char cadena[1000]; do { printf("\n ...
  #1 (permalink)  
Antiguo 18/05/2011, 18:31
Avatar de ManelGomez  
Fecha de Ingreso: diciembre-2007
Ubicación: El Prat de llobregat
Mensajes: 180
Antigüedad: 16 años, 4 meses
Puntos: 2
Salir de un While pulsando la tecla Escape

Hola a todos:

Tengo este codigo, y quiero que se ejecute mientos no pulse la tecla escape.


int main(void)
{
char cadena[1000];
do
{
printf("\n PROGRAMA DE ENCRIPTACION:\n");
printf(" 1. Introducir un texto a Codificar.: ");
gets(cadena);

MenuCifrado();

} while(opcion=getchar()!= ESC);

return(0);

}

Alguna alma caricativa a este problemon.

Un Saludo
  #2 (permalink)  
Antiguo 19/05/2011, 02:59
 
Fecha de Ingreso: abril-2011
Mensajes: 49
Antigüedad: 13 años
Puntos: 1
Respuesta: Salir de un While pulsando la tecla Escape

Se me ocurre ( es solo una idea no lo he probado ) que podrías utilizar el código ASCII para la tecla escape y usarlo para hacer la comprobación en el bucle.
  #3 (permalink)  
Antiguo 19/05/2011, 07:13
Avatar de ManelGomez  
Fecha de Ingreso: diciembre-2007
Ubicación: El Prat de llobregat
Mensajes: 180
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Salir de un While pulsando la tecla Escape

Si podria ser. Pero como.

Creo que cuando pulsas una tecla hay dos bytes para leer. ej. CTL + algo, Shit + tecla.

Un Saludo
  #4 (permalink)  
Antiguo 19/05/2011, 11:03
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Salir de un While pulsando la tecla Escape

El problema creo que esta es que por la entrada standar el esc no es detectado... asi que usar un getchar para leer no sirviria. Deverias usar alguna otra libreria para detectar eso.
  #5 (permalink)  
Antiguo 20/05/2011, 08:46
 
Fecha de Ingreso: febrero-2006
Mensajes: 4
Antigüedad: 18 años, 2 meses
Puntos: 0
Respuesta: Salir de un While pulsando la tecla Escape

Buenas, buscando por la red encontre este codigo, a ver si te sirve.
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4.  
  5. #define ESCAPE_KEY 27
  6.  
  7.  
  8. int main(void)
  9. {
  10.    
  11.    int c;
  12.    
  13.    while ((c = getch()) != ESCAPE_KEY)
  14.    {
  15.       if (c == 0)
  16.       {
  17.          printf("0, ");
  18.          fflush(stdout);
  19.          c = getch();
  20.       }
  21.      
  22.       printf("%d\n", c);
  23.    }
  24.    
  25.    return EXIT_SUCCESS;
  26. }

me pregunto si esto se podra hacer usando cin y cout...

bueno saludos.
  #6 (permalink)  
Antiguo 20/05/2011, 15:09
Avatar de ManelGomez  
Fecha de Ingreso: diciembre-2007
Ubicación: El Prat de llobregat
Mensajes: 180
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Salir de un While pulsando la tecla Escape

Hola:

Gracias, me ha servido de mucho ya que vengo de vb y me ha gustado. Detectas el codigo de tecla pulsada para direccionar hacia que rutina.

Un Saludo.
  #7 (permalink)  
Antiguo 11/10/2013, 03:44
 
Fecha de Ingreso: junio-2012
Mensajes: 2
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Salir de un While pulsando la tecla Escape

Hola, no sé si seguirás interasado.
De todas formas de la página de MSDN puedes ver las siguientes clases con sus métodos (todo en un ejemplo):

using System;

class Example
{
public static void Main()
{
ConsoleKeyInfo cki;
// Prevent example from ending if CTL+C is pressed.
Console.TreatControlCAsInput = true;

Console.WriteLine("Press any combination of CTL, ALT, and SHIFT, and a console key.");
Console.WriteLine("Press the Escape (Esc) key to quit: \n");
do
{
cki = Console.ReadKey();
Console.Write(" --- You pressed ");
if((cki.Modifiers & ConsoleModifiers.Alt) != 0) Console.Write("ALT+");
if((cki.Modifiers & ConsoleModifiers.Shift) != 0) Console.Write("SHIFT+");
if((cki.Modifiers & ConsoleModifiers.Control) != 0) Console.Write("CTL+");
Console.WriteLine(cki.Key.ToString());
} while (cki.Key != ConsoleKey.Escape);
}
}


El programa lee también combinaciones de teclas, por si también te sirve.

El enlace para que puedas verlo mejor:
http://msdn.microsoft.com/es-es/library/471w8d85.aspx

Un saludo.
  #8 (permalink)  
Antiguo 11/10/2013, 04:25
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Respuesta: Salir de un While pulsando la tecla Escape

Cita:
Iniciado por ManelGomez Ver Mensaje
Hola:

Gracias, me ha servido de mucho ya que vengo de vb y me ha gustado. Detectas el codigo de tecla pulsada para direccionar hacia que rutina.

Un Saludo.
Ojo, ese código solo compila en Windows.
  #9 (permalink)  
Antiguo 12/10/2013, 10:09
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: Salir de un While pulsando la tecla Escape

Si no te importa que sea Windows directamente:

Código C++:
Ver original
  1. #include <windows.h>
  2.  
  3. while (!GetAsyncKeyState(27))
  4. {
  5.     ...
  6. }

Etiquetas: escape, salir, tecla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:16.