14/03/2009
La función getch() es una herramienta fundamental en programación C, aunque su uso está asociado principalmente a compiladores antiguos como Turbo C para MS-DOS. A pesar de su obsolescencia en estándares modernos, su comprensión sigue siendo relevante para desarrolladores que trabajan con código heredado o que buscan entender los fundamentos de la entrada de datos en C.

¿Qué es getch()?
getch() es una función no estándar que se encuentra en el archivo de encabezado conio.h. A diferencia de las funciones de entrada estándar como getchar(), getch() lee un solo carácter del teclado sin necesidad de presionar la tecla Enter. Esto permite crear interfaces más interactivas, donde la respuesta a una entrada del usuario es inmediata.
Una característica clave de getch() es que el carácter leído no se muestra en la pantalla. Esto resulta útil para implementar la entrada de contraseñas o cualquier otro tipo de información sensible que no deba ser visible al usuario.
Sintaxis y parámetros
La sintaxis de getch() es simple:
int getch(void);La función no recibe parámetros y devuelve el valor ASCII del carácter leído. Si no se ha presionado ninguna tecla, el comportamiento puede variar dependiendo del compilador.
Retorno de la función
La función getch() retorna un entero que representa el código ASCII del carácter tecleado. Este valor puede ser usado para realizar diferentes acciones en el programa dependiendo del carácter ingresado.
Librerías relacionadas: conio.h
La función getch() se encuentra dentro de la librería conio.h. Esta librería proporciona una variedad de funciones específicas para la manipulación de la consola en entornos MS-DOS, muchas de las cuales están en desuso en sistemas modernos. Sin embargo, es importante conocer esta librería para entender el contexto de getch().
Otras funciones importantes dentro de conio.h incluyen:
- clrscr(): Limpia la pantalla de la consola.
- cprintf(): Función similar a
printf(), pero con opciones adicionales para manipular la salida en la consola. - getch(): La función principal de este artículo.
- getche(): Similar a getch() , pero muestra el carácter leído en la pantalla.
Comparación entre getch(), getchar() y getche()
| Función | Muestra el carácter | Requiere Enter | Librería |
|---|---|---|---|
| getch() | No | No | conio.h |
| getchar() | Sí | Sí | stdio.h |
| getche() | Sí | No | conio.h |
Esta tabla muestra las diferencias clave entre estas tres funciones de entrada de caracteres. getch() es la única que no muestra el carácter en pantalla y no requiere la pulsación de la tecla Enter.
Ejemplos de uso de getch()
Ejemplo básico
Este ejemplo muestra cómo usar getch() para leer un carácter sin mostrarlo en pantalla:
#include <stdio.h>#include <conio.h>int main() { printf("Presiona una tecla: "); int tecla = getch(); printf("La tecla presionada fue: %c", tecla); return 0;}Ejemplo con entrada de contraseña
En este ejemplo, se utiliza getch() para obtener una contraseña sin que se muestre en la consola:
#include <stdio.h>#include <conio.h>#include <string.h>int main() { char password[10]; printf("Ingrese su contraseña: "); for (int i = 0; i < 10; i++) { password[i] = getch(); if (password[i] == '
') break; //Enter key pressed printf(" "); } password[strlen(password)] = '\0'; printf("Contraseña ingresada: %s", password); return 0;}Consideraciones importantes
Es fundamental entender que getch() es una función no estándar y su disponibilidad depende del compilador. En compiladores modernos, es probable que se encuentre en desuso o incluso no esté disponible. Para código portable y que cumpla con los estándares, se recomienda utilizar las funciones de entrada estándar de la librería stdio.h.
Además, el uso de getch() puede generar advertencias del compilador, ya que no es parte de los estándares C y C++. Estas advertencias pueden ser ignoradas en algunos casos pero siempre es preferible usar funciones estándar.
Alternativas a getch()
Para código que debe ser portable y que cumpla con los estándares, existen alternativas a getch() que ofrecen similar funcionalidad. Sin embargo, es probable que estas alternativas no funcionen exactamente igual en todos los sistemas.
En sistemas POSIX compatibles, la función _getch(), disponible en la librería conio.h, puede ofrecer una funcionalidad similar, aunque tener en cuenta las diferencias entre compiladores.
Consultas habituales sobre getch()
- ¿Qué es la función getch en C? Es una función que lee un carácter del teclado sin mostrar en pantalla ni esperar el Enter.
- ¿En qué librería se encuentra getch? En la librería conio.h , usualmente asociada a compiladores antiguos como Turbo C.
- ¿Por qué getch() está en desuso? Porque no es parte del estándar C/C++ y su portabilidad es limitada.
- ¿Cuál es la diferencia entre getch() y getchar()? getch() no muestra el carácter y no espera Enter, getchar() hace ambas cosas.
Aunque getch() es una función con limitaciones en términos de portabilidad y estándares modernos, su conocimiento sigue siendo valioso para comprender la evolución de la entrada de datos en C y para trabajar con código heredado.
Si quieres conocer otros artículos parecidos a Librería getch y ejemplos puedes visitar la categoría Libros y Librerías.
