SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: NICOLASBLUES en Jueves 13 de Mayo de 2010, 03:44

Título: Truncar teclas C Linux
Publicado por: NICOLASBLUES en Jueves 13 de Mayo de 2010, 03:44
Hola a todos!!

bueno tengo una pequeña duda estaba pensando en que si hay alguna manera de poder truncar o bloquear las teclas cuando se pide que se igresen datos, me explico, supongamos que se pide que se ingrese una cadena y a la hora de teclear por ejemplo la etra "n", nisiquiera se imprima en pantalla cuando la presiono... se que deve haber  alguna manera con directivas o algo asi
yo me imagino que puede ser revisando primero las letras que uno presiona con una funcion como getchar o algo asi pero no se me ocurre del todo como implementarlo
bueno espero que puedan ayudarme

os dejo Saludos.......
  
Título: Re: Truncar teclas C Linux
Publicado por: Aprendiz21Sam en Jueves 13 de Mayo de 2010, 12:09
Código: C
  1. int i;
  2. char Cadena[20];
  3.  
  4. printf("Cadena: ");
  5. for(i=0; i<20; i++)
  6. {
  7.   Cadena[i]=getch();
  8. }
  9.  
Título: Re: Truncar teclas C Linux
Publicado por: rock_neurotiko en Domingo 16 de Mayo de 2010, 16:42
También, si no quieres hacer un bucle, lo que puedes hacer en linux es usar la libreria ncurses.h (la que sustituye a conio.h de Turbo C).

Un ejemplo sería:

Código: C
  1.  
  2. #include <stdio.h>
  3. #include <ncurses.h>
  4.  
  5. int main()
  6. {
  7.  
  8. char cadena[60];
  9.  
  10. initscr(); /*Empezamos el modo ncurses*/
  11.  
  12. printw("Escriba la cadena:"); /*Observese como se ha usado printw en vez de printf, eso es porque estamos dentro de una ventana de ncurses, por lo tanto hay que usar printw (ncurses trabaja con "ventanas")*/
  13.  
  14. refresh(); /*Para  refrescar la ventana, no es obligatorio, pero si recomendable*/
  15.  
  16. noecho(); /*Con esta función dices que NO se imprima en pantalla todo lo que sigue*/
  17.  
  18. scanw("%s", &cadena); /*Se usa también scanw en vez de scanf*/
  19.  
  20. echo(); /* Para que se vuelva a visualizar lo siguiente*/
  21.  
  22. printw("Muy bien, ahora, para comprobar que ha funcionado... la cadena es la siguiente: %s", cadena); /*En realidad esto es para que veas que funciona perfectamente, pero seria una tonteria esconderlo y luego enseñarlo xD*/
  23.  
  24. getch(); /*Para salir cuando se pulse una tecla*/
  25.  
  26. endwin(); /*Se termina el modo ncurses*/
  27.  
  28. return 0;
  29.  
  30. }
  31.  

Espero que te haya servido ;)

Ah, y recuerda, para compilar con gcc el codigo seria algo asi:  gcc -lncurses prueba.c -o prueba
Título: Re: Truncar teclas C Linux
Publicado por: NICOLASBLUES en Domingo 16 de Mayo de 2010, 19:11
Gracias por responder no es exactamente lo que buscaba pero se acerca bastante, enverdad lo que buscaba es truncar ciertas teclas osea digamos que pido que se ingrese un numero la idea seria truncar todo los caracteres que no sean números con esta nueva info se me ocurre que puedo usar getch
no se bien como funciona pero si esta función devuelve el carácter ingresado podría hacer una verificación si es el carácter esperado ingresarlo donde corresponda sino que siga intentando lo voy a probar ahora...


GRACIAS!!


Saludos Cordiales...
Título: Re: Truncar teclas C Linux
Publicado por: rock_neurotiko en Domingo 16 de Mayo de 2010, 19:57
Ahhhhh, ya se lo que quieres.

Si, con el bucle y getch puedes hacerlo.