elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 22:27  


Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  ¿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 1,140 veces)
theluigy13etv

Desconectado Desconectado

Mensajes: 106


Primero se hace, después se mejora


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

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: 2.831


I'Love...!¡.


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

.
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
 
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
 
char* GetStrKB();
 
int main() {
   char *cadena = GetStrKB();
   fprintf( stdout , "%s" , cadena );
   free( cadena );
   return 0;
}
 
char* GetStrKB()
/**
   Obtiene las pulsaciones de entrada con un buffer dinamico.
**/

{
   int     c           = 0;
   char    *str        = NULL;
   size_t  szt_ln      = 0;
   while((c=getchar()) != 10 ) // 10 = {enter}
   {
       if ( c>='0' && c<='9' ) {
           str = (char*)realloc(str,sizeof(char)*(szt_ln+1));  // no es nesesario sizeof(char)... ya que char es 1byte...
           str[szt_ln++] = (char)c;
       } else {
           // QUIZAS haya que crear un Hilo para el Beep...
           Beep ( 500 , 50 );  // Beep ( Frecuencia, Duracion en Milisegundos )
       }
   }
   if ( str!=NULL ) str[szt_ln] = '\0';
   return str;
}
 
 


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

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



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

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
COMO HACER CD MIXTO AUDIO Y DATO
Grabadoras
quintanaja 3 1,193 Último mensaje 17 Abril 2003, 15:38
por §¤~OniX~¤§ ¥ ®
hacer que un exe se ejecute solo en determinado tiempo?
Programación Visual Basic
koopa2 3 1,504 Último mensaje 10 Noviembre 2006, 13:48
por Gorky
Tipo de dato abstracto
Programación General
niniodinho 2 2,273 Último mensaje 21 Junio 2009, 18:58
por niniodinho
como ingresar solo numeros de dos cifras en un textbox
Programación Visual Basic
Paula Fernanda 3 2,340 Último mensaje 22 Mayo 2010, 14:17
por TheGhost(Z)
Recomendación tipo de dato
Bases de Datos
novalida 2 1,101 Último mensaje 4 Diciembre 2010, 04:06
por [D4N93R]
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines