Ver Mensaje Individual
  #3 (permalink)  
Antiguo 27/04/2012, 08:32
sefirotxx
 
Fecha de Ingreso: febrero-2011
Mensajes: 108
Antigüedad: 13 años, 9 meses
Puntos: 4
Respuesta: problema con enteros u caracteres

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?