Código (c) [Seleccionar]
int entrenumeros(num1,num2){
int i=0,resp;
char respuesta[15];
do{
printf("Introduzca un numero entre %i y %i:\n",num1, num2);
fgets(respuesta,sizeof(respuesta),stdin);
for(i=0; respuesta[i] != '\0'; i++){ //lee los caracteres de uno en uno.
if (isdigit(respuesta[i])){ //Si es un digito lo pone en la variable resp
resp=atoi(respuesta);
if ((resp>=num1 && resp<=num2)){ //Si resp esta entre los dos numeros que nosotros ponemos como parametros es correcto y sale del for y del do-while, retornando el valor de resp al programa principal
break;
}
if((resp<num1 || resp>num2)){ //Si el numero no esta entre los parametros muestra el mensaje
printf("Has realizado una seleccion no valida\n");
break;
}
}
if (isalpha(respuesta[i])){ //si es un caracter muestra el mensaje
printf("Has realizado una seleccion no valida\n");
break;
}
}
} while (!(resp>=num1 && resp<=num2)); //Solo sale si el numero introducido se encuentra entre los parametros puestos por nosotros.
return resp;
}
He hecho este codigo pero tengo un problema, ahora los parametros introducidos a la funcion los damos nosotros y el dato que el usuario nos de debe estar entre num1 y num2, el problema es cuando ponen una cadena del tipo "2ASKDASDL" que lee primero el 2 pero ignora el resto de la cadena (cosa que deberia dar error y mostrar mensaje de seleccion no valido).