¿Como hacer ingresar solo un tipo de dato determinado?

Iniciado por theluigy13etv, 2 Julio 2011, 01:48 AM

0 Miembros y 1 Visitante están viendo este tema.

theluigy13etv

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?

BlackZeroX

#1
.
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...



#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;
}

The Dark Shadow is my passion.