执行for循环

时间:2018-04-29 06:08:39

标签: c loops

这个循环将如何无限次执行?

#include <stdio.h>

int main() {
    int i;
    for (; scanf("%d", &i); printf("%d\n", i)); 
    return 0;
}

2 个答案:

答案 0 :(得分:3)

for循环的条件部分为scanf("%d", &i);,在用户提供无效输入之前返回true。阅读man 3 scanf并检查返回值。

更好地运行循环,直到按下Ctrl+d

之类的键
for (; scanf("%d", &i) != EOF; printf("%d\n", i)); 

或者比较scanf()的返回值,因为scanf("%d", &i) == 1返回1,只要它能够将用户输入转换为整数。

for (; scanf("%d", &i) == 1; printf("%d\n", i));

答案 1 :(得分:1)

这将持续到scanf返回零值,因此只要有足够的输入,它就可以永久运行。文件结尾将为零。

这是表达这种逻辑的一种非常难看的方式。只需使用while

实际文件的长度不限,但有些像yes实用程序那样可以生成无穷无尽的输出流,可以通过管道传输到这样的程序中。