Как настроить контекстное меню на Си(в консоли), чтобы при достижении определенного case выводил обратно в главное меню

printf("Enter any character to display the menu.\n");
char a = getchar();
scanf("%s", &a);
system("clear");
printf("1)Start testing\n"
         "2)Instructions for working with the program\n"
         "3)Exit application\n");
char b = getchar();
scanf("%s", &b);
if (!isdigit(b)) {
    printf("Error");
    exit(0);
}
else {
    switch (b) {

Как сделать, чтобы при прочтении инструкции, пользователь ввел любой символ/символы и вернулся в главное меню? Через goto делается довольно просто, но пока я читал о нем меня уберегали от его использования очень яростно.

case '2':
        system("clear");
        printf("Тут будет инстуркция по работе, ее надо прорабоать\n");
        scanf("%s",&b); //тут попробовал чтобы вводил символы, при введения одного символа не работает
        break;

Ответы (1 шт):

Автор решения: AlexGlebe

Если программа не помещается визуально не экран, обычно советуют использовать переменные состояния продолжать или нет. И использовать цикл do{..}while(..);

bool contin ;
do {
  contin = false ;
  printf("Enter any character to display the menu.\n");
  char a = getchar();
  scanf("%s", &a);
  system("clear");
  printf("1)Start testing\n"
         "2)Instructions for working with the program\n"
         "3)Exit application\n");
  char b = getchar();
  char buf[16];
  scanf("%s", &buf[0]);
  b = buf[0];
  if (!isdigit(b)) {
    printf("Error");
    exit(1);
  }
  else {
    switch (b) {
    case '2':
        system("clear");
        printf("Тут будет инстуркция по работе, ее надо прорабоать\n");
        //тут попробовал чтобы вводил символы, при введения одного символа не работает
        scanf("%s", &buf[0]);
        b = buf[0];
        contin = true ;
        break;
    }
  }
} while ( contin ) ;
→ Ссылка