viernes, 12 de agosto de 2011

Usando Ncurses - Funcion getch y move

Este es mi primera entrada en el blog, no sabia que publicar así que he decidido empezar precisamente por el inicio de mis experiencias al migrar a GNU/Linux. Cuando estaba en segundo semestre en la universidad, en las clases de lenguajes de programación compilábamos código en C bajo dev c++, y unas de las primeros ejercicios que realizó nuestra clase fue un programa que mostraba el código ASCII de cada tecla. Cuando intentaba compilar el código en casa, (bajo Fedora 12 en ese tiempo) me mostraba un error debido a que la función getch() no es ANSI C, ya que pertenece a la biblioteca conio.h creada por Borland que no existe en GNU/linux.
Navegando en internet me encontré con ncurses y resolví mi inquietud de la siguiente manera:

#include "ncurses.h"

int main(int argc, char *argv[]){

      initscr();     
      int t;   
   
      while((t=getch())!=27)
      {
            move(5,0);     
            printw("Codigo ASCII: %d  Caracter: %c \n", t, t);
            move(0,0);
            printw("Presiona ESC para terminar... "); 
       }     
     
      endwin();
      return 0;
}
Al usar ncurses cambiamos un poco la forma de leer datos por el teclado e imprimir por pantalla, en lugar de usar printf y scanf, se usará printw y scanfw que funcionan exactamente de la misma manera.
También hay que tener en cuenta que al usar ncurses, debemos usar la función initscr() para iniciar la pantalla y endwin() para terminar; el getch() funciona exactamente igual que el de conio.h. Por otro lado, también observamos la función move(), con ella podemos posicionar el cursor donde queramos enviándole las coordenadas, seria el equivalente a gotoxy() (también de conio.h).
Y por ultimo no se les olvide al compilar agregar el argumento de la libreria ncurses, quedando de esta manera:
g++ ejemplo.cpp -o demo -lncurses

No hay comentarios:

Publicar un comentario