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 <conio.h> de Borland para poder generar código y compilar
 * 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.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a