我想让用户选择一个选项。所以我声明了一个名为 Choice 的变量,我希望它输入char
,'M'
,'C'
,{ {1}}或'O'
。
这是我的代码:
'P'
当我用错误的值测试它时(输入一个不在char Choice;
printf("Select something to do :\n'M':Model Parametering\n'C':Calendar creation\n'O':Calendar Output\n'P':Calendar Print\nChoice==>>");
Choice = getchar();
while(Choice!='M' && Choice != 'C' && Choice != 'O' && Choice != 'P'){
printf("\nIncorrect choice, Try again\n");
printf("Select something to do :\n'P':Model Parametering\n'C':Calendar creation\n'O':Calendar Output\n'P':Calendar Print\nChoice==>>");
Choice = getchar();}
中的字符,while循环不止一次。
例如,如果我输入['M','C','O','P']
而不是"TEST"
,'M'
,'C'
或'O'
虽然工作5次不仅像我想要的一样!
为什么会这样?
答案 0 :(得分:1)
输入TEST
(4个字符值)后,您还按 Enter 。这是传递给你的程序的第五个字符(换行符,真的)。同样地,在执行单个字符(和 Enter )之后,循环运行两次 - 首先是字符本身,然后是换行符。
答案 1 :(得分:0)
您已输入TEST
它有4个字符,因此stdin有4个字符,因此可以执行4次getchar()
。然后在下一个getchar()
它将再次等待stdin的下一个输入。
答案 2 :(得分:0)
getchar()从stdin中单独考虑一个字符。提供输入为“TEST”,它首先读取'T',再次循环,读取E,再次循环,读取S等等,直到它可以请求另一个再次,这是第五个循环。