OBJECTIF: Lorsque j'entre une valeur numérique autre que les choix, le message d'entrée invalide s'affiche. Mais quand j'entre une valeur char comme az ou * (# caractères $ programme boucles à l'infini. S'il vous plaît aider! Vous avez besoin de résoudre le petit problème.Détecter tout caractère autre que int
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
int ch,end=0;
while(end!=1)
{
printf("\t MENU! \n");
printf("\n1 - Set\n");
printf("2 - Start\n");
printf("3 - About\n");
printf("4 - Exit\n");
printf("\nEnter your choice: ");
scanf("%d",&ch);
if(ch==1)
{
printf("\nYella\n");
}
else if(ch==2)
{
printf("\nFella\n");
}
else if(ch==3)
{
printf("\nMella\n");
}
else if(ch==4)
{
exit(0);
}
else
{
printf("\nInvalid Input. Please try again.\n");
printf("\n");
}
}
getch();
}
Si l'entrée contient des lettres, la 'scanf' ne consomme pas, il reste dans la mémoire tampon d'entrée, et' scanf (« % d », ...) ' échoue toujours sur le non-chiffre (non-moins). Effacer le tampon après un 'scanf' échoué. Ou n'utilisez pas 'scanf' du tout,' getchar() 'ou' fgets' sont des alternatives faciles. –