Soit un Affichage à deux menus : Menu A et Menu B, le diagramme d’états/transitions est :
Le code C équivalent est :
#include "stdio.h" // Flèches du clavier numérique : la flèche du haut est le caractère 8 etc. # define UP '8' # define DOWN '2' # define RIGHT '6' # define LEFT '4' // Création d'une énumération avec deux valeurs // La variable 'Menu' contient la défaut 'Menu_A, le premier niveau enum {Menu_A, Menu_B} Menu = Menu_A ; char ToucheAppuyee() { char fleche[2]; // une chaîne au lieu d'un caractère -> "bug" dans repl.int printf("\nUtilisez une flèche pour naviguer dans le menu :"); scanf("%s", fleche); // Attention sans '&' car chaîne de caractères return (fleche[0]); // retourne uniquement le premier caractère par la fin de ligne '\n' } void ActionsMenuA() // Les actions à effectuer dans le Menu A { puts("Menu niveau A"); if (ToucheAppuyee() == DOWN) Menu = Menu_B; // Si c'est DOWN, on descend // dans les autres cas, aucune action } void ActionsMenuB() { puts("Menu niveau B"); if (ToucheAppuyee() == UP) Menu = Menu_A; } int main(void) { while (1) { switch (Menu) { case Menu_A: ActionsMenuA(); break; case Menu_B: ActionsMenuB(); break; } } return 0; }