Salir del programa cuando presiono una tecla
tomy2904
-
Doctor C Mensajes publicados 630 Fecha de registro Estado Miembro Última intervención -
Doctor C Mensajes publicados 630 Fecha de registro Estado Miembro Última intervención -
Hola,
A ver, me gustaría saber qué código usar para poder salir del programa si el usuario pulsa una tecla de su teclado.
En realidad, he creado un pequeño menú:
1.Jugar
2.Salir
Y me gustaría que el programa se cierre dejando una frase antes (por ejemplo) cuando el usuario pulse la tecla 2 (por ejemplo)
¡Muchas gracias por vuestra ayuda!!! :D
Configuración: Windows 7 / Firefox 3.6.12
A ver, me gustaría saber qué código usar para poder salir del programa si el usuario pulsa una tecla de su teclado.
En realidad, he creado un pequeño menú:
1.Jugar
2.Salir
Y me gustaría que el programa se cierre dejando una frase antes (por ejemplo) cuando el usuario pulse la tecla 2 (por ejemplo)
¡Muchas gracias por vuestra ayuda!!! :D
Configuración: Windows 7 / Firefox 3.6.12
6 respuestas
-
Voila, je viens de tester ta derniere proposition..
Lorsque je choisi la 2ieme proposition càd "Quitter", le programme ne m'affiche pas le "printf" :S Il passe directement a la suite càd à la sortie du programme donc "press any key..."
VOila comment ce presente mon programme avec le menu et ma selection :
--------------------------------------------------------------------------------------------
(1) : Jouer
(2) : Regles du jeu
(3) : Quitter
Que voulez-vous faire ? 3
Process returned 4207747 (0x403483) execution time : 1.963 s
Press any key to continue.
-------------------------------------------------------------------------------------------
--> Il n'y a pas la demande avant de quitter.. Je suppose donc qu'il ne tient pas compte du "case 3" (dans ce cas-ci) :/ -
Supongo que programas en C?
¿Puedes hacer una condición donde si el usuario pulsa 2, muestres una frase del tipo '¿Realmente quieres salir del programa? (s/n)'.
Luego, haces un scanf para obtener lo que el usuario elige (sí o no) y si escribe 's', haces el siguiente código:
exit(EXIT_SUCCESS);
--
Echo "Lima Mike Alfa"; -
Gracias, mucho. Esto es lo que hice para el case2:
printf("Voulez-vous vraiment quitter? Oui(O)/Non(N)");
scanf("%s", &lettre); // variable declarada más arriba: char lettre;
if (lettre=='O')
{
exit(EXIT_SUCCESS);
}
else
{
//¿Cómo volver al principio del programa para volver a mostrar el menú?
}
¿Es correcto? ¿Y podrías indicarme qué podría poner en el "else" para poder volver a mi menú (hacer el bucle, ¿qué?
Además, probé tu función: exit(EXIT_SUCCES); pero al compilar me salen mensajes de error:
- "warning: incompatible implicit declaration of built-in function 'exit'"
- "error: 'EXIT_SUCCES' undeclared (first use in function)"
- ...
Gracias por tu información y por tu ayuda, ¡claro! ;) -
Para la constante EXIT_SUCCESS, tal vez haga falta un import, no lo recuerdo. Pero puedes reemplazarla por un 0, así funcionará igual.
exit(0);
Por otro lado, para el menú, puedes ponerlo en un bucle de este tipo:
do { printf("1. Jouer"); printf("2. Quitter"); scanf("%d",&choix); switch(choix) { case 1: // el código del juego break; case 2: printf ("¿Quiere realmente salir? Sí(O)/No(N)"); scanf ("%s", &lettre); if (lettre=='O') { exit(0); } break; } }while(true);
Si no quieres hacer una pregunta antes de salir del programa, podrías reemplazar la última línea por :
while(choix!=2);
--
Echo "Lima Mike Alfa"; -
Quizás tu valor de elección no es el correcto.
Agrega un 'case default' a tu switch para verificar si tu variable elección tiene el valor asignado correcto: https://www.commentcamarche.net/contents/111-langage-c-les-structures-conditionnelles
Si el switch va a default, es que el valor de tu variable elección no es ni 1, ni 2, ni 3, lo que podría ser tu problema.
--
Echo "Lima Mike Alfa"; -
Hola,
Me uno a la conversación.
El error viene del código.char lettre; scanf ("%s", &lettre);
lettre es un char, por lo tanto hay que usar scanf("%c",&lettre); o más simplemente lettre=getchar();
Pero no hay que olvidar vaciar el buffer de teclado que contendrá el carácter '\n' (la tecla intro) tras el scanf anterior.
Para vaciarlo, puedes usar getchar() simplemente (o más limpio con un bucle while).
En conclusión, reemplaza scanf("%s",&lettre); por :getchar(); lettre=getchar();
Saludos,
Google is your friend