2014-10-24 2 views
0

У меня есть меню, одним из вариантов является выход из программы, но если пользователь вводит символ, отличный от 1 2 3 4 5 6 он все равно выходит из программы или прекращает работу. Я хочу, чтобы после ввода неправильного символа меню снова появилось, и пользователь снова может ввести его. Я хочу, чтобы это происходило бесконечно, если пользователь вводит неверные символы бесконечно. Спасибо большое!Как повторить меню (запросить ввод пользователя снова) после того, как переключатель получил неправильный символ ввода

#include<stdio.h> 
#include<stdlib.h> 

int main(void) 
{ 
    char opcao; 


    printf("1 - \n"); 
    printf("2 -\n"); 
    printf("3 - \n"); 
    printf("4 - \n"); 
    printf("5 - \n"); 
    printf("6 - Terminar programa\n"); 
    printf("Introduza a sua opcao:\n"); 
    scanf("%c",&opcao); 

     switch(opcao){ 
    case'1': 
     printf("Funcionalidade nao disponivel."); 
     break; 
    case'2': 
     printf("Funcionalidade nao disponivel."); 
     break; 
    case'3': 
     printf("Funcionalidade nao disponivel."); 
     break; 
    case'4': 
     printf("Funcionalidade nao disponivel."); 
     break; 
    case'5': 
     printf("Funcionalidade nao disponivel."); 
     break; 
    case'6': 
     exit(0); 
    default: 
     printf("invalid input, please type again"); // this is what I want, but how?(now it would present the menu again... 
     break; 
     } 

    return 0; 
} 
+0

do ... while loop? Одна из первых вещей в книге C –

+0

Подсказка. Пользователь может вводить несколько раз несколько раз, и вам нужно будет показывать меню. Поэтому вы хотите поставить оператор switch в цикле. Выйдите из цикла, когда вход правильный. –

+0

A do while loop? @SteveWellens ?? –

ответ

0

Используйте do...while петлю, так что ваш код выглядит следующим образом:

#include<stdio.h> 
#include<stdlib.h> 

int main(void) 
{ 
    char opcao; 


    printf("1 - \n"); 
    printf("2 -\n"); 
    printf("3 - \n"); 
    printf("4 - \n"); 
    printf("5 - \n"); 
    printf("6 - Terminar programa\n"); 
    printf("Introduza a sua opcao:\n"); 
    do{ //loop 
    scanf(" %c",&opcao); //discards blanks and reads the first non-whitespace character 

     switch(opcao){ 
    case'1': 
    case'2': 
    case'3': 
    case'4': 
    case'5': 
    printf("Funcionalidade nao disponivel."); 
    break; 
    case'6': 
     exit(0); 
    default: 
     printf("invalid input, please type again:"); // this is what I want, but how?(now it would present the menu again... 
     } 
    }while(opcao<'1' ||opcao>'6'); //loop until `opcao` less than '1' or greater than '6' 

    return 0; 
} 
+0

Если я нахожу неправильный ввод, вывод говорит неверный ввод предложения, пожалуйста, введите еще раз: дважды - –

+0

@LeonardoNunes, вы не скопировали мой код правильно. Замените мой 'scanf' вашим' scanf' и посмотрите на волшебство! –

0

Я дал образец кода здесь. Вы можете улучшить это в соответствии с вашими потребностями

#include <string.h> 
int main(){ 
    char c, q=1; 
    while (q){ 
     c=getchar(); 
     switch (c){ 
      case '1':{} break; 
      case '2': {printf ("quit the menu\n");q=0;}break; 
     } 
    } 
    return 0; 
} 
Смежные вопросы