Alternativa a conio.h en Linux Ubuntu usando curses.h

Para los que alguna vez aprendimos a programar con el famosos y antiguo Turbo C que si no mal recuerdo en ese entonces era de la extinta Borland, en esos ayeres pudimos ver que existían funciones como getch(), gotoxy(), color(); que eran parte de una biblioteca propia de Turbo C llamada conio.h y como no es parte del estándar ANSI C no la tenemos en Linux Ubuntu.

Bueno pues ésta entrada es para comentar que existe una biblioteca para Linux que aunque también no es parte del estándar ANSI C la podemos utilizar como alternativa a las funciones que teníamos en conio.h y aquí te digo qué tienes que hacer.

Primero que nada quiero comentar que actualmente estoy utilizando la versión 12.04 de Ubuntu por lo que lo que verás está con esa distribución de Linux.

Debes instalar los paquetes libncurses5-dev y libncursesw5-dev con:

sudo apt-get install libncurses5-dev libncursesw5-dev


Abres tu entorno de desarrollo y prueba escribiendo el siguiente código:


#include <curses.h>

int main() {
  initscr(); //activar el acceso a la pantalla
  clear(); //limpia la pantalla
  move(0,30); //mueve el cursos a la posición 0,30
  printw("Hola");
  refresh(); //mostrar en pantalla lo escrito por printw
  getch(); //espera la pulsación de una techa
  endwin(); //cerrar el acceso a la pantalla
  return 0;  
}



En lo personal me gusta mucho Geany como entorno de programación tanto para PHP como para lenguaje C así que comentaré que después de construir el programa y que puedas construirlo sin problemas tendrás que modificar el comando de construir desde el menú de Geany como se muestra en la siguiente captura:


Deberás poner la opción -lcurses al final del comando construir como se puede ver en la siguiente captura:


Por último, ejecuta el programa y podrás ver el funcionamiento de las funciones antes mencionadas. Bueno, por hoy es todo y no antes mencionar que la información fue vista en las siguientes ligas:

11 comentarios:

  1. muchisimas gracias, no sabes del lio del que me sacaste, recien empiezo a usar c en ubuntu y aunque estaba familiarizado con el de borland (un poco pasado de moda como tu dices) me dio un poco duro el paso, a causa de las pequeñas diferencias con instrucciones, bibliotecas.. muchisimas gracias, post como estos nos ayudan a personas de mi edad (tengo 16) a solucionar muchos de los problemas a la hora de programar. muchisimas gracias

    ResponderEliminar
  2. Muchas gracias!! me solucionaste un problema , los comandos getch, y el rand por ejemplo son muy útiles, gracias por compartir ésto para ubuntu, yo utilizo elementary OS y anda a la perfección también. Saludos

    ResponderEliminar
  3. hola amigo, disculpa sabras si tambien sustituye a la libreria alloc.h??

    ResponderEliminar
    Respuestas
    1. Estimado Yabin ncurses no sustituye a alloc.h la que tiene las funciones que necesitas es stdlib.h ya que tiene las funciones de manejo de memoria dinámica como son calloc, malloc, free. Saludos!

      Eliminar
  4. Hola, ¿Como agrego los comandos de construcción en Codeblocks?

    ResponderEliminar
    Respuestas
    1. No conozco mucho de Codeblocks pero al parecer encuentras las configuraciones en el menú: Settings -> Compiler y verás debajo de la ventana "Compiler flags" ahí deberás marcar las que más se perecen a las que comenté en el figura final del post.

      Eliminar
  5. Que bueno que te ha servido Eduardo :) saludos!

    ResponderEliminar
  6. hay una libreria que puedes descargar en la siguiente dirección

    https://sourceforge.net/projects/conio4linux/
    la cual debes copiar en
    cp conio.h /usr/include/

    ResponderEliminar
    Respuestas
    1. Gracias Dario por el aporte, daré una oportunidad a la librería que mencionas y haré pruebas. Saludos!

      Eliminar
  7. Hola pEpE a mi también me gusta mucho Geany pero estoy teniendo un problema y quisiera solucionarlo: no me aparece la opción de debugger, y trate de instalarla de todas formas: por comando y por Synoptic y no hay caso. Y quería saber si sabes como puedo solucionar el problema.
    Desde ya te agradezco por tu respuesta.

    ResponderEliminar
    Respuestas
    1. Creo que estás usando una versión de Ubuntu que no tiene los paquetes para instalarlo, al parecer las versiones nuevas como la 19.10 no lo tiene, podrías checar el link siguiente donde indica un método:

      https://stackoverflow.com/questions/60797910/how-can-i-debug-c-in-geany

      Eliminar

Error al compilar en Android Studio 4.0: CIRCULAR REFERENCE:com.android.tools.r8.a: Invoke-customs are only supported starting with Android O

Resulta que estuviste construyendo tu APP desde Android Studio 4.0 y no te marcó ningún tipo de error de codificación pero al querer compila...