Ir al contenido principal

Gscanf , el scanf de C con limitación máxima de caracteres usando NCurses y GCC

Introducción


Siempre he sido un poco melancólico y me ha llamado la atención el desarrollo de aplicaciones en modo texto, sobre todo cuando recuerdo mis primeros programas hechos en Turbo Basic 1.0.

He ido a algunos establecimientos y en pleno 2014 he visto que usan programas TUI ( Text User Interface) , y no es que estén anticuados. 

Por ejemplo, conozco un establecimiento que tiene un servidor Linux y los puntos de venta se conectan por terminal usando ssh , teniendo tan solo un equipo sin X y sin nada más para aprobechar recursos.  

Por ese motivo fue que me puse a investigar sobre qué librería usarían esos programas.
Buscando di con la libreria NCurses , habrán muchas más , pero esta lleva muchos años, es un proyecto GNU, tiene libros oficiales que explican como funciona y mucha documentación.

Al grano


Recordando cuando empecé a programar en Turbo Basic 1.0 para MSDOS , me acuerdo que una vez necesité tener un input con limitación de texto , es decir , la propiedad maxLength que tienen los controles TextBox en .net o JTextField de Swing. 

Pues recuerdo que me puse a hacerlo y lo hice en su momento para Turbo Basic y ahora trasteando con la libreria NCurses pues quise reproducir el mismo programa pero en C. Yo y mis frikadas.

Te diré que echaba de menos programar en modo texto, porque tanto .net, swing y todos estos componentes ya hechos, te van "desentrenando" el cerebro y no te hacen pensar , ya que tienes muchas cosas hechas, a mi por lo menos me pasa. No viene mal trastear con este tipo de interfaces en la que algunas cosas ya no vienen desarrolladas por defecto.


¿Cómo funciona?

Descarga aquí la función: https://github.com/tsw1985/Gscanf

La función tampoco es algo del otro mundo, pero está más o menos currada y puedes usar los cursores, las teclas de inicio y fin , insertar y suprimir. Si abres una terminal en modo texto tty1 el cursor lo verás mejor, pero con la terminal usando las X el cursor tendrá este aspecto.




Para que funcione simplemente copia y pega la función en un objeto , o donde quieras en tu código. Crea un buffer que tenga el mismo tamaño + 1 de la longitud de la cadena que quieres y con la función strcpy pasa el puntero de donde está la variable resultado a el buffer.

Definición de la función:
gscanf(coordenada Y , coordenada X , longitud );

int length = 10;

char final[11];
char* wordResult = gscanf(10,15, length + 1 );
strcpy(final , wordResult);

move(1,1);
printw("THE RESULT IS %s ", final);

Quizás esto nunca lo necesites nunca, pero bueno, quería compartirlo ;).

Saludos !!

Entradas populares de este blog

LPIC-1 101 y 102

Certificación LPIC-1 101-102. Linux Certification Institute. Esta entrada es especial para mi porque he aprobado el certificado LPIC-1 de Linux. Al buscar información sobre las certificaciones , pues encontré información confusa y sé de algunas personas que quieren prepararse el exámen para un futuro , y si las bases de los exámenes no cambian quería aclararle las dudas. Quien no sepa lo que es LPIC-1 , es una certificación del Linux Professional Institute  la cual avala que tienes los conocimientos mínimos para gestionar un sistema operativo Linux independientemente de su distribución, como siempre te pongo la información más extendida   aquí .  El LPIC-1 es el primer exámen de todos y te digo desde ya que tiene su dificultad. Esto lo digo porque yo mismo al llevar un par de años con Linux , creía que mis conocimientos en Linux eran suficientes y solo había visto la punta del iceberg. Y en el primer nivel tocas muchas cosas. Lo que te quiero decir con esto es que e

Juego de la Serpiente con Java Swing

En esta entrada les voy a mostrar como hice el juego de la serpiente. Cuando tenía 15 años lo intente hacer y en ese momento lo ví como algo extremadamente complejo.  En su momento no vi mucha información de como hacer el juego ( o no supe encontrar ) , y por si alguien está en esta situación , aquí va mi aportación para intentar aclarar sus dudas.    He visto muchos códigos que lo han hecho mucho mejor, dibujando en el Frame y mucho más trabajado, pero yo personalmente soy partidiario de que siempre es mejor ver las cosas desde su nivel más simple, y una vez entendida la idea, ya luego pasarla a otra cosa, darle mejor aspecto y adornos son valores añadidos. Para el que no sepa como funciona el juego de la serpiente ( cosa que dudo , todos tuvimos un Nokia ) , es una serpientita a la que le van apareciendo frutas , ella va comiendo y se va haciendo grande, hasta que llega un momento que se hace muy difícil controlarla porque es demasiado grande y chocamos con nosotros mismos.

Añadiendo autocompletado a un JTextField de Java Swing

Esta vez para un trabajo de clase en  Java Swing  me vi con la necesidad de tener un JTextField con autocompletado ( como la caja de texto de Google cuando buscas algo ) y como no viene por defecto el JTextField con esta característica , pues tuve que hacerme uno. Pero en este caso no me hacía falta consultar una base de datos para rellenarlo según vas escribiendo en él, sino que a este ya le doy los datos a filtrar de antemano. Tú dirás ... pero si hay miles en internet ya hechos , por qué reinventar la rueda ...,  Ya , ya lo sé , pero en algunos de los que ví , no me gustaba la manera de como se implementaban en el código para poder usarlo , otros no me gustaban como se veían visualmente , y lo más importante ... yo no me podía quedar con la duda de como se hacía uno ( esta última era la que más me podía jeje , yo y mi curiosidad ). ¿Cómo lo uso ? Te explico como funciona el componente GTextField , tan simple como instanciarlo y en su constructor pasarle t