Restringir entrada en programa, error cuando un usuario introduce un carácter

Tengo problemas en C, estoy haciendo un programa sencillo, en donde programa pide un dato, pero yo quiero restringir la entrada a solo números, y no char, porque cuando el usuario introduce un carácter el programa falla

1 Respuesta

Respuesta
1
... de lo que me dices deduzco que estás utilizando la función scanf para pedir los números. Si no es así, ya me lo dirás. Pero en ese caso, no conozco forma alguna (que no quiere decir que no la haya), de restringir eso. En cualquier caso, y es lo que yo he hecho siempre que lo he necesitado, te puedes hacer una función que acepte el número letra por letra y lo convierta al tipo que tú necesitas. Te paso un ejemplo sencillo, aunque para hacerlo útil debería elaborarse un poco más, para permitir, por ejemplo, el borrar caracteres mal introducidos, etc. Sea como sea, la función que ahora te escribiré te puede servir de base para hacerte tu propia función de entrada de números:
int PedirEntero(void)
{
int num=0,pos=1;
unsigned char c;
do{
c=getch();
if(c>='0' && c<='9')
{
printf("%c",c);
num=num*pos+(c-48);
pos=pos*10;
}
}while(c!=13);
return num;
}
... acabo de picarla sobre la marcha, igual falla algo (espero que no). La idea es aceptar caracteres uno a uno y mostrar y utilizar únicamente los que estén entre '0' y '9'. Evidentemente no he controlado nada respecto a borrar, o incluso te puede fallar con la introducción de ceros a la izquierda...
Otra opción sería ir aceptando caracteres, almacenarlos en una cadena y usar luego al función 'itoa' para convertir.
En fin.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas