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?
.
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;
}