éste es un artículo enviado por Leonardo Mosquera de una lista de correo de programación (Programacion@listas.fi.uba.ar) el cual se tomo textualmente y respetando los creditos, deseo les sirva de ayuda a ustedes programadores:
On 9/11/07, Andorogynus ! <[EMAIL PROTECTED]> wrote:
>
> Como puedo hacer en C para simular un INKEY$ (que viejo !)
> Es decir, efectuar una pausa hasta que el tipo presione una tecla.
>
> Probe con getchar() pero no me permite abortar (Ctrl-C) el programa.
>
A continuacion te adjunto una contribucion que hizo alguien a la lista de mi
universidad una vez. Podes recortar todo lo que no sea getch() y su soporte.
Tene en cuenta la licencia, o al menos no copies/pegues sino que
"inspirate".
Nota: tradicionalmente se usa ncurses para eso que queres hacer, pero yo
mismo ya conclui que ncurses es demasiado armatoste si simplemente queres
pausar el programa por la duracion de exactamente 1 tecla.
------------------------------------------------------------------------
/* +++++++++++ conio.h de Porland (versión trucha del Borland :-)
+++++++++++
*
* Autor: Omar Murray (Crux_) Versión: 0.0.2
* Licencia: GPL Fecha: 05/06/07
*
* Esto intenta ser una recopilación de las funciones más utilizadas en
* la librería
* utilizando gcc en GNU/Linux, y luego poder correrlo en un entorno
* Borland sin necesidad de modificar el código escrito. Mayormente son
trozos
* de código obtenido de inet y recopilados en una sola librería. La
idea es
* utilizarlo para fines educativos; está en absoluto estado alfa, así
que su
* uso queda a riesgo de quien lo utilice.
*
* CHANGELOG
* v 0.0.1 Se implemente funciones getch() y clrscr().
* v 0.0.2 se agrega función gotoxy(), se ordena código.*/
#include < stdio.h >
#include < termios.h >
#include < unistd.h >
#include < stdlib.h >
#include < string.h >
//******************FUNCION GETCH****************************
int getch( ) {
struct termios oldt,
newt;
int ch;
tcgetattr( STDIN_FILENO, &oldt );
newt = oldt;
newt.c_lflag &= ~( ICANON | ECHO );
tcsetattr( STDIN_FILENO, TCSANOW, &newt );
ch = getchar();
tcsetattr( STDIN_FILENO, TCSANOW, &oldt );
return ch;
}
//******************FUNCION CLRSCR*****************************
void clrscr( ) {
system("clear");
}
//**************** **FUNCION GOTOXY*****************************
int gotoxy(int x, int y) {
char essq[100]; // String variable to hold the escape sequence
char xstr[100]; // Strings to hold the x and y coordinates
char ystr[100]; // Escape sequences must be built with characters
// ** Convert the screen coordinates to strings
sprintf(xstr, "%d", x);
sprintf(ystr, "%d", y);
// ** Build the escape sequence (vertical move)
essq[0] = '\0';
strcat(essq, "\033[");
strcat(essq, ystr);
// ** Described in man terminfo as vpa=\E[%p1%dd
// ** Vertical position absolute
strcat(essq, "d");
// ** Horizontal move
// ** Horizontal position absolute
strcat(essq, "\033[");
strcat(essq, xstr);
// // Described in man terminfo as hpa=\E[%p1%dG
strcat(essq, "G");
// ** Execute the escape sequence
// ** This will move the cursor to x, y
printf("%s", essq);
return 0;
}
_______________________________________________
Lista de correo Programacion.
Programacion@listas.fi.uba.ar
http://listas.fi.uba.ar/mailman/listinfo/programacion
No hay comentarios:
Publicar un comentario