fgets() while 循环不会中断
fgets() while loop won't break
我取出了while循环中的部分代码,但我想跳出fgets()while循环直到读入一个字符'q'。但是程序仍然需要一些输入并且它不会结束程序。为什么这个方法行不通?
char buffer[300];
while (fgets(buffer, 300, stdin))
{
int i;
for (i = 0; i < 300; i++){
if (buffer[i] == 'q')
break;
}
}
您已跳出 for
循环,但未跳出 while
循环。
重构以便 while 循环使用变量而不是直接使用 fgets
。
int keep_going = fgets(buffer, 300, stdin);
while(keep_going)
{
int i;
for (i = 0; i < 300; i++){
if (buffer[i] == 'q')
{
keep_going = 0;
break;
}
keep_going = fgets(buffer, 300, stdin);
}
}
@John3136 给出的好建议的替代方法是创建一个标志,如果您在内循环中点击字母 'q'
,您可以使用该标志有条件地跳出外循环。以下代码可让您保持原来的通用结构:
while (fgets(buffer, 300, stdin)) {
bool is_break = false;
int i;
for (i = 0; i < 300; i++){
if (buffer[i] == 'q') {
is_break = true;
break;
}
}
if (is_break)
break;
}
我取出了while循环中的部分代码,但我想跳出fgets()while循环直到读入一个字符'q'。但是程序仍然需要一些输入并且它不会结束程序。为什么这个方法行不通?
char buffer[300];
while (fgets(buffer, 300, stdin))
{
int i;
for (i = 0; i < 300; i++){
if (buffer[i] == 'q')
break;
}
}
您已跳出 for
循环,但未跳出 while
循环。
重构以便 while 循环使用变量而不是直接使用 fgets
。
int keep_going = fgets(buffer, 300, stdin);
while(keep_going)
{
int i;
for (i = 0; i < 300; i++){
if (buffer[i] == 'q')
{
keep_going = 0;
break;
}
keep_going = fgets(buffer, 300, stdin);
}
}
@John3136 给出的好建议的替代方法是创建一个标志,如果您在内循环中点击字母 'q'
,您可以使用该标志有条件地跳出外循环。以下代码可让您保持原来的通用结构:
while (fgets(buffer, 300, stdin)) {
bool is_break = false;
int i;
for (i = 0; i < 300; i++){
if (buffer[i] == 'q') {
is_break = true;
break;
}
}
if (is_break)
break;
}