Hola mvideros, resulta que hemos comenzado C y nos han dado unos ejercicios muy simplones, en si el programa funciona bien, hace lo que tiene que hacer, peroooo.... hay un problemilla.
A ver se trata de que tenemos que meter un numero del 1 al 12 (estos incluidos) y el programa nos devuelve el nombre del mes.
#include <stdio.h>
void main(void)
{
int num=0;
char *mes;
while ( num > 12 || num < 1 ) {
printf ("Introduzca el numero del mes. \nNumero: ");
fflush (stdin);
scanf ("%d",&num);
}
switch (num) {
case 1: mes = "Enero"; break;
case 2: mes = "Febrero"; break;
case 3: mes = "Marzo"; break;
case 4: mes = "Abril"; break;
case 5: mes = "Mayo"; break;
case 6: mes = "Junio"; break;
case 7: mes = "Julio"; break;
case 8: mes = "Agosto"; break;
case 9: mes = "Setiembre"; break;
case 10: mes = "Octubre"; break;
case 11: mes = "Noviembre"; break;
case 12: mes = "Diciembre"; break;
}
printf ("El mes introducido es %s \n",mes);
}
El caso es que si meto un numero mayor a 12 o menor a 1 me vuelve a pedir el numero, ahi ningun problema, pero si le meto una letra, comienza a hacer un bucle infinito en el que no para de pedirme el numero y automaticamente hace un enter y me vuelve a pedir el numero.
Se supone que C trata las letras como numeros por el codigo ASCII por lo tanto suponiendo que las letras son numeros, si A es 43 (x poner un ej) deberia volver a pedirme el numero (cosa que hace) pero esperarse a que lo pudiera meter para decirme si pasa o si me lo vuelve a pedir.
Le he preguntado a 2 profesores pero no tienen idea de cual puede ser el motivo, si me pudierais explicar os lo agradeceria.
Saludos.