【发布时间】:2013-05-31 15:48:08
【问题描述】:
我知道这种 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, ""));
【问题讨论】:
-
您没有在任何地方修改
option。在printf("something\n");之后添加option++,如果它是一个特定值,或者在某个时候为其分配10。 -
现在这是一种在
while()循环条件下重复打印的奇怪方法。非常难以阅读。 -
实际上我是从 char buffer[100] 中取出整数并将其分配给 int 选项。
-
你能发布那个代码吗?我们无法确定问题是否不存在:)
-
“
return 0”后缺少分号
标签: c while-loop gets