Cómo comprobar el carácter de "retroceso" en C
character backspace (5)
Creo que el controlador de entrada del sistema está en búfer de línea. Así que no es posible en la norma C.
Me gustaría saber cómo verificar si un usuario escribe el carácter de "retroceso".
Estoy usando la función getch() function ie "key = getch()"
en mi programa C y me gustaría verificar cuándo se presiona la tecla de retroceso. la línea:
if(key = ''/b'') { ....
no funciona
El problema con la lectura de Retroceso es que la mayoría de los terminales están "cocinados", ya que las teclas de retroceso son manejadas por el controlador del terminal. Sin embargo, la función de getch()
puede leer el retroceso ya que no está vinculada al terminal.
Editar
Acabo de notar que su código está usando getch()
para la entrada. Ejecuté un pequeño programa de prueba y getch()
devuelve 127 cuando presionas el retroceso. Por lo tanto, intente:
if (key == 127 || key == 8) { ... /* Checks for both Delete or Backspace */
También tenga en cuenta que su código de muestra usa el operador de asignación =
cuando debería estar usando el operador de igualdad ==
El tipo de flujo de E / S puede ayudar. El flujo de entrada estándar es un tipo de flujo de línea con búfer, que no se vacía a menos que escriba un carácter ''/ n'' en él. El flujo completo en búfer nunca se vacía hasta que el búfer está lleno. Si escribe una tecla de retroceso en el flujo de buff completo, se puede capturar ''/ b''.
Consulte el programa de ventajas del entorno Unix.
No dijiste de qué biblioteca proviene la función getch()
(no es parte del estándar C), pero si es la de ncurses, puedes verificar el valor de la key
contra KEY_BACKSPACE
.
Prueba esto:
#include <stdio.h> /* printf */
#include <ctype.h> /* isalpha isdigit isspace etc */
#define FALSE 0
#define TRUE 1
/* function declarations */
int char_type(char);
main()
{
char ch;
ch = 127;
char_type(ch);
ch = ''/b'';
char_type(ch);
return 0;
}
int char_type(char ch)
{
if ( iscntrl(ch) != FALSE)
printf("%c is a control character/n", ch);
}
Este es un programa completo pero solo prueba los caracteres de control. Podrías usar principios de eso, tu elección. ¡Sólo aprendiendo también!
Consulte: http://www.tutorialspoint.com/c_standard_library/ctype_h.htm o busque las funciones para el archivo de encabezado ctype.h de C Standard Library.
Es bueno que estés recibiendo información. Gracias a todos por la información. Estaba buscando un código de retroceso y encontré esta pregunta.
Por cierto intente ''/ 0'' antes de cualquier char. No estoy seguro de qué hace eso pero detiene todo el código después de eso. Es que como el retorno 0; ¿línea?