我在while循环中取出了部分代码,但是我想在循环中跳出fgets()直到它读入一个字符'q'。但该程序仍然需要一些输入,它不会结束该程序。为什么这种方法不起作用?
char buffer[300];
while (fgets(buffer, 300, stdin))
{
int i;
for (i = 0; i < 300; i++){
if (buffer[i] == 'q')
break;
}
}
答案 0 :(得分:1)
@ 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;
}
答案 1 :(得分:0)
你已经脱离了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);
}
}