SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: djxim en Domingo 17 de Noviembre de 2002, 19:17

Título: Re: entrada de texto
Publicado por: djxim en Domingo 17 de Noviembre de 2002, 19:17
holass
   estoy buscando una función similar a la getch() de conio.h en windows pero que sea c standar.
   no hay alguna función que lea un caracter sin esperar que se pulse la tecla intro?

   muchas gracias:P
Título: Re: entrada de texto
Publicado por: wimogan en Jueves 28 de Noviembre de 2002, 21:13
Hola:

Lo primero es que debes decir si la quieres para Linux o para windows, porque si es para windows, como ya tu lo sabes, el "getch" de la conio.h te puede ayudar con lo que quieres; pero si es para Linux tambien puedes usar el mismo "getch" y te haria la misma funcion, pero se encuentra en las librerias "ncurses" y "curses.h".

Ah, me parece que en windows tambien tienes "kbhit" que te puede funcionar como el "getch".

Si te interesa algun ejemplo en linux, aqui tienes el siguiente:

#include <stdio.h>
#include <ncurses.h>
#define KEY_ESC '33'

main ()
{

int c,x=1,y=1;

initscr(); //Inicializo Ncurses.
keypad(stdscr,TRUE); //Permito el mapeo de las teclas de funciones en la pantalla.

while ((c=getch())==KEY_RIGHT) //Leo la tecla presionada.
{
mvprintw(x,y,"A"); //Me muevo a las coordenadas (x,y) e imprime la letra "A".  

if (y<=10) y=y+1; //Aumenta las columnas.
else {x=x+1;y=1;printw("n");} //Aumenta la fila, hace la columna 1 y baja a una nueva linea.
}
refresh(); //Refresco de pantalla para sacar los caracteres.
endwin(); //Finalizar Ncurses.

}

Lo compilas: gcc -o nombre nombre.c -l ncurses

Suerte, y espero y te ayude.

Ariel.
Título: Re: entrada de texto
Publicado por: Satyr en Lunes 20 de Enero de 2003, 03:44
weno puedes hacerlo de la siguiente manera:

#include<conio.h>
#include<stdio.h>

#define ESC 27

main()
{
  char c='a';
 
   while(c!=ESC){
          if(kbhit())
             c=getch();
         }
}
Título: entrada de texto
Publicado por: JuanK en Viernes 14 de Marzo de 2003, 17:10
:alien:
para capturar un solo caracter sin presionar enter utiliza:

caracter=getche();
:lightsabre:
suerte