我有一个菜单,其中一个选项是退出程序,但如果用户输入的字符不是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 :(得分:1)
使用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;
}
答案 1 :(得分:1)
我在这里给出了示例代码。您可以根据需要进行增强
#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;
}