elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Como hacer ingresar solo un tipo de dato determinado?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Como hacer ingresar solo un tipo de dato determinado?  (Leído 2,531 veces)
theluigy13etv

Desconectado Desconectado

Mensajes: 179


Primero se hace, después se mejora


Ver Perfil
¿Como hacer ingresar solo un tipo de dato determinado?
« en: 2 Julio 2011, 01:48 am »

Mi duda es si hay alguna forma en lenguaje C o C++ para validar el ingreso de datos, de tal manera que frente a aluna lista de oociones en pantalla (switch), solo permite ingresar la opción correcta, y si escribo algún número o presiono enter o escape o alguna tecla que no corresponda,el programa envía un pitido y no realiza ninguna accion hasta que haga lo correcto??..se trabaja acaso con el codigo ASCII de las teclas?


En línea

BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 3.140


I'Love...!¡.


Ver Perfil WWW
Re: ¿Como hacer ingresar solo un tipo de dato determinado?
« Respuesta #1 en: 2 Julio 2011, 01:58 am »

.
Si con el ASCII...

P.E.: El siguiente codigo puedes apretar TODO lo que desees del teclado pero solo capta las pulsaciones de numeros del 0 al 9 ( como cadena ), y deja de escribir al oprimir Enter...

Código
  1.  
  2. #include <windows.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. char* GetStrKB();
  7.  
  8. int main() {
  9.    char *cadena = GetStrKB();
  10.    fprintf( stdout , "%s" , cadena );
  11.    free( cadena );
  12.    return 0;
  13. }
  14.  
  15. char* GetStrKB()
  16. /**
  17.     Obtiene las pulsaciones de entrada con un buffer dinamico.
  18. **/
  19. {
  20.    int     c           = 0;
  21.    char    *str        = NULL;
  22.    size_t  szt_ln      = 0;
  23.    while((c=getchar()) != 10 ) // 10 = {enter}
  24.    {
  25.        if ( c>='0' && c<='9' ) {
  26.            str = (char*)realloc(str,sizeof(char)*(szt_ln+1));  // no es nesesario sizeof(char)... ya que char es 1byte...
  27.            str[szt_ln++] = (char)c;
  28.        } else {
  29.            // QUIZAS haya que crear un Hilo para el Beep...
  30.            Beep ( 500 , 50 );  // Beep ( Frecuencia, Duracion en Milisegundos )
  31.        }
  32.    }
  33.    if ( str!=NULL ) str[szt_ln] = '\0';
  34.    return str;
  35. }
  36.  
  37.  


« Última modificación: 2 Julio 2011, 02:38 am por BlackZeroX▓▓▒▒░░ » En línea




CScript (Actualizado 26/06/2013).

FileX <-- Re-modelando...
Web Principal-->[ Blog(VB6/C/C++) | Host File | Scan Port) ]

The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilit y el metal mi relig
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines