我正在使用这个双循环。我是C的新手。
int crawler;
char *desired[100];
crawler = getchar();
while(crawler != EOF) {
int i = 0;
while((crawler != '\n') && (crawler != EOF)) {
desired[i] = crawler;
i++;
crawler = getchar();
}
printf("%s", desired);
}
我只是不明白为什么我在这里得到无限循环(LLLLLLLLL ..)。 Stdin看起来像这样:
Lorem(newline)
Ipsum(newline)
Beach(newline)
Crocodile(newline)
Crox(newline)
C(EOF)
有什么想法吗?感谢。
答案 0 :(得分:3)
当crawler
为EOF
时,您的外部循环结束。
当crawler
为'\n'
或EOF
时,您的内部循环结束。
只有内部循环读取输入(通过调用getchar
)。
因此:只要读取第一个'\n'
,就不会重新进入内部循环(条件拒绝'\n'
),但外部循环不会结束,并且永远不会更改crawler
的价值。
结果:外部循环旋转而不读取任何输入。