Cuando programamos en C, nos enseñan desde primera hora a usar las funciones típicas de entrada/salida presentes en stdio.h: printf(), scanf(), getchar(), gets()… pero normalmente se obvia el uso de funciones algo más avanzadas para detectar pulsaciones de teclas o interactuar de forma más directa con la terminal.
Hoy os explicaré para qué sirven dos funciones: getch() y getche(), disponibles en conio.h (como ya advierto en el título de la entrada, este código funciona en entornos Windows, en entornos Linux ya explicaré en otra entrada cómo se puede hacer).
Veamos un ejemplo en el que detectamos la pulsación de las flechas del teclado, la tecla ENTER y el tabulador:
#include <stdio.h> #include <conio.h> int main() { char cTecla; printf("\r\nPresione un Tecla ..."); while(cTecla != 27) { cTecla = getch(); if(cTecla == 0) cTecla = getch(); else switch(cTecla) { case 13: printf("\r\n Presiono ENTER"); break; case 9: printf("\r\n Presiono TAB"); break; case 72: printf("\r\n Presiono Flecha Arriba"); break; case 80: printf("\r\n Presiono Flecha Abajo"); break; case 75: printf("\r\n Presiono Flecha izquierda"); break; case 77: printf("\r\n Presiono Flecha derecha"); break; } } return 0; }
https://www.youtube.com/embed/z-xGk9c_eOw Guionista y locutor: Manuel Ignacio López Quintero.Fecha de publicación: 31 de diciembre de 2024.
Ver comentarios
interesante..
Fijaos bien en el detalle de usar "\r\n" en lugar de "\n". Recordad, los saltos de líneas difieren entre unos sistemas operativos y otros:
* "\n": Linux
* "\r": Mac OS
* "\r\n": Windows
El por qué de estas diferencias no lo conozco, ¿alguien lo sabe?
hola muy interesante el articulo , tengo un problema intento hacer esto mismo pero en linux con g++ , al principio intente con SDL pero el programa crea muchos procesos y arroja un error, bueno en resumen solo te pido que expliques la terminacion de determinada instruccion pulsando una tecla, que no espere como el cin o el getchar te lo agradeceria mucho, ojala leas rapido este comentario saludos y de antemano gracias
Solo escribo para darte una observación, ya que esas flechas también son las letras en mayúsculas de P, M, H y K. Aquí les dejo un programita sobre este tema que acabo de hacer en C, esta en Dev-C++ v5.8.3 pero también funciona en Code::Blocks v13.12:
http://www.4shared.com/rar/7RSGNAgCce/Que_Tecla_Es_En_C.html
http://www.4shared.com/rar/MK_5wN8Nba/Que_Tecla_Es_En_C.html
conio.h en linux?????????