C语言 - WHILE循环工作更多应该是

时间:2016-11-30 19:38:48

标签: c loops while-loop char getchar

我想让用户选择一个选项。所以我声明了一个名为 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次不仅像我想要的一样! 为什么会这样?

3 个答案:

答案 0 :(得分:1)

输入TEST(4个字符值)后,您还按 Enter 。这是传递给你的程序的第五个字符(换行符,真的)。同样地,在执行单个字符(和 Enter )之后,循环运行两次 - 首先是字符本身,然后是换行符。

答案 1 :(得分:0)

您已输入TEST它有4个字符,因此stdin有4个字符,因此可以执行4次getchar()。然后在下一个getchar()它将再次等待stdin的下一个输入。

答案 2 :(得分:0)

getchar()从stdin中单独考虑一个字符。提供输入为“TEST”,它首先读取'T',再次循环,读取E,再次循环,读取S等等,直到它可以请求另一个再次,这是第五个循环。