我知道这个 while 循环问题很常见,通常是由输入流中的换行符引起的。但是,我无法修复我的 while 循环,而且我真的不明白为什么会发生这种情况。
考虑以下示例:
int main()
{
int option = -1;
char buffer[100];
while (option != 10)
{
while(printf("Enter menu choice: \n"), gets(buffer), option < 0)
{
some code here dealing with buffer and assigning input to option...
}
printf("something\n");
}
return 0;
}
忽略此代码的实现(例如,将输入存储为整数而不是字符串等),因为它只是我的 while 循环案例的简化版本。让我担心的是,在它真正通过循环之前,我必须输入两次数字。
输出:
进入菜单选择:1
进入菜单选择:1
所有灯都打开 灯光设置:1111 1111 1111 1111
我不确定为什么会在这种情况下发生...谢谢!
更新:感谢您的回答。我通过重写我的 while() 条件来修复代码
while(printf("\nEnter menu choice: \n"), gets(buffer), option = checkMenuOption(buffer), option < 0 && strcmp(buffer, ""));