Código:
do {
printf("Ingrese un numero\n");
c=scanf("%d",&opcion); // si se ingresa un caracter, scanf retorna cero
}while(c>0);
Gracias por tu respuesta, pero ojala tranformara en 0 si el usuario ingresa un char o una cadena... mira he perfeccionado validando que reconosca 5 numeros y los demas los convierta a 0, esto me sirve cuando el usuario ingresa numeros invalidos (fuera de 1 o 5)... pero el problema es cuando ingresa un caracter
Código:
int pedirOpcion()
{
int opcion, a;
printf("\t\tIngrese una opcion : ");
scanf("%d",&opcion);
//validar si la opcion ingresada por el usuario esta entre 1 y 5, cualquier
//otra opcion la transformara en 0
if (opcion>0 && opcion<6)
{
return opcion;
}
else
{
opcion=0;
return opcion;
}
}
Como veras esta funcion retorma la opcion y haciendo pruebas cuando agrego un caracter o cadena
transforma opcion en 0 pero se pega el programa, no pasa lo mismo cuando es cualquier tipo de numero, hace su trabajo normal, si esta sobre 5 lo tranforma a 0
La pregunta es, ¿existe alguna forma de que el programa no se pegue?