C:在double循环中使用getchar() - 卡在循环中?

时间:2017-10-18 10:58:14

标签: c loops while-loop getchar

我正在使用这个双循环。我是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)

有什么想法吗?感谢。

1 个答案:

答案 0 :(得分:3)

crawlerEOF时,您的外部循环结束。

crawler'\n'EOF时,您的内部循环结束。

只有内部循环读取输入(通过调用getchar)。

因此:只要读取第一个'\n',就不会重新进入内部循环(条件拒绝'\n'),但外部循环不会结束,并且永远不会更改crawler的价值。

结果:外部循环旋转而不读取任何输入。