elessar53 con comme un drapeau | Bonjour à tous. Je dois, dans un programme en C, réaliser un menu. J'ai choisi la solution du demander un nombre à l'utilisateur qui correspond à un choix du menu qu'on a affiché precedemment. Le problème c'est que la variable choix mise en tant que int fait planté le prog quand on fait scanf("%d",&choix); si on entre 0.5 par exemple.
Pour m'en sortir j'ai mis choix en float et ensuite pour le test switch (pour tester le choix de l'utilisateur) j'ai mis switch((int)choix) pour forcer à passer en entier ( pke on peut pas faire un switch sur un float ). donc la sa marche si l'utilisateur entre 0.5, mais pas du tout si l'utilisateur entre la lettre a par exemple. Est-ce qu'il existe une solution simple, compact pour avoir un menu qui ne plante pas si l'utilisateur se tape un delire dessus. Je demande pas le code tout fait, mais juste une piste ou une technique.
merci
Code :
- void menu(void)
- {
- float choix;
- system("cls" );
- printf("Menu : entrez le code correspondant a l'action souhaitee :\n\n\t1 -\tparametrages\n\t2 -\treinitialiser\n\t3 -\tsimulation manuelle\n\t4 -\tsimulation automatique\n\t5 -\tquitter\n" );
- do
- {
- scanf("%f",&choix);
- } while(!((choix==1)||(choix==2)||(choix==3)||(choix==4)||(choix==5)));
- switch((int)choix)
- {
- case 1:
- break;
- case 2:
- break;
- case 3:
- break;
- case 4:
- break;
- case 5:
- quitter();
- break;
- default:
- break;
- }
- printf("\n%f",choix);
- printf("\n%d",(int)choix);
- }
|
|