Qué función necesito?

Rev
30 de Marzo del 2004
Alguien sabe como puedo convertir los números de tipo entero a los de tipo carácter, en esta función por ejemplo

char cursor(void)
{
char tecla;
do
{
setcolor(15); printf("_");
delay(100);
setcolor(0); printf(" ");
}while(!kbhit);
tecla=kbhit;
return(tecla);
}

kbhit es una palabra reservada que obtiene un no. entero que necesito pasar a carácter para poder regresarlo como valor de la función.
Alguien sabe como lo puedo hacer, y si esa asignación del valor de kbhit a la variable tecla es correcta?
Gracias de antemano por su ayuda.

Alejandro_
30 de Marzo del 2004
Hola Rev,

kbhit() (con los dos paréntesis) es una función de <conio.h>, que no toma parámetros, y que devuelve un valor entero. Este valor no identifica a la tecla pulsada sino que sólo nos dice si se ha pulsado algo o no: un valor distinto de cero para una tecla pulsada o cero, en caso contrario.

Si kbhit() indica que alguna "keystroke" está disponible, ésta puede ser leída con getch() o getche(), por ejemplo.

Entonces, al salir del ciclo do, debieras poner:

do {
...
} while(!kbhit()); // mientras no se pulse una tecla
tecla = getch(); // lee la tecla pulsada

return tecla;

//--------------

Después, esta función cursor() podría usarse así:

char a = cursor();
cprintf("la tecla pulsada fue: %c",a);

//---------------

Por otro lado, un dato de tipo "char" es de tipo entero, que dependiendo del compilador que estés utilizando, será un "signed char" o un "unsigned char", y es la función cprintf() la que se ocupa de representarlo como un carácter o no. En este caso, al poner "%c" en su cadena de formato, lo mostrará como un carácter.

También, ten en cuenta que la biblioteca <conio.h> no pertenece al estándar (no está incluida en el ANSI C ni en el ANSI C++), y por lo tanto no será portable.

Suerte,

Alejandro