我在循环中使用 scanf 获取长度为 100 的数组的输入。在 20 个数字之后,如果我输入 -1,我希望循环退出,即完成输入并继续程序的其余部分。我正在做这样的事情
for(i=0;i<100;i++)
{
scanf("%d", &input[i]);
if(input[i] == -1)
{
break;
}
}
我听说,即使这段代码工作得很好,使用 break 语句也是一种不好的做法。所以我想知道在输入 -1
时结束循环的更有效方法是什么。我试过了
for(i=0;scanf("%d",&input[i])!=-1;i++)
还有
fori(i=0;i<100;i++){
do
{scanf("%d", &input[i]);
}while(input[i]!=-1
}
这两个都不行
最佳答案
for
循环的第二个表达式是一个自由形式的 bool 表达式。在这种情况下,您可以在那里添加您的条件。但是在这种情况下,它看起来不太好。例如
for(i=0; i < 100 && (i < 1 || input[i - 1] != -1); i++)
{
scanf("%d", &input[i]);
}
即如果我们已经输入了一个值,请检查该值并且该值必须不等于 -1
才能继续循环
另一种方法是使用合成标志变量:
int loop_again = 1;
for (i = 0; loop_again && i < 100; i++) {
scanf("%d", &input[i]);
if(input[i] == -1)
{
loop_again = 0;
}
}
总而言之,这两者看起来比仅仅使用 break
语句来实现它的发明目的要丑陋得多。
请注意,您还应该检查 scanf
本身的返回值!
关于c - 在不使用 break 的情况下终止输入为 -1 时的数组输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47451568/