Je souhaite créer un menu simple dans un programme C acceptant un seul caractère. Le menu sera comme ceci:Menu acceptant un seul caractère en langage C
- [S] comment
- [E] xit
Si l'utilisateur d'entrer '1', 'l' ou 'S' le programme affichera " Bonjour "et demander à nouveau pour l'entrée sinon si l'utilisateur entre" 2 ", E ou" E "le programme se termine. sinon il devrait imprimer "entrée invalide" et demander à nouveau.
Je suis capable de créer le programme mais le problème est que lorsque l'utilisateur entre 12, 13, 14, 15, 16 ..... ainsi de suite en commençant par 1, il affiche Hello et même pour les autres options.
Mon code est:
#include <stdio.h>
void clearBuffer();
int main() {
int i = 0;
char selection;
do
{
printf("\t1. [S]how\n");
printf("\t2. [E]xit\n");
printf("Enter your selection from the number or character noted above: ");
scanf("%s", &selection);
clearBuffer();
if (selection == '1' || selection == 's' || selection == 'S')
printf("Hello");
else if (selection == '2' || selection == 'E' || selection == 'x')
i = 0;
} while(i != 0);
}
void clearBuffer()
{
while(getchar() != '\n');
}
Il arrive un moment où vous travaillez avec des interfaces utilisateur (même en mode caractère) lorsque vous avez probablement besoin de fonctions d'E/S qui ne sont pas dans la bibliothèque standard. S'il s'agit d'un exercice d'apprentissage, vous pouvez rechercher des fonctions spécifiques à une plate-forme ou une API portable prenant en charge des E/S plus immédiatement interactives. Dans la pratique, vous êtes probablement mieux avec une bibliothèque portative comme «malédictions» que l'IIRC va gérer vos menus pour vous - bien que je ne l'ai pas utilisé moi-même. J'ai déjà écrit une bibliothèque d'interface utilisateur en mode texte pour Turbo Pascal (beaucoup de gens l'ont fait - réinventer la roue était un passe-temps populaire), mais je ne le recommande pas. – Steve314
'curses' serait en fait une excellente bibliothèque à utiliser pour un système de menu, mais cela prend un peu plus de temps que ce que l'OP fait ici. Si l'OP est à l'aise de travailler avec les bibliothèques et de faire tous les autres réglages/nettoyages impliqués dans les "malédictions", alors oui, allez-y. Cela ressemble plus à une tâche de devoirs, et je ne suis pas très sûr si il/elle est si loin dans la programmation. @ user521815: à quel point êtes-vous à l'aise avec la programmation C à ce stade? – Will