C:在双重 while 循环中使用 getchar() - 卡在循环中?

C : using getchar() in double while loop - stuck in loop?

我正在使用这个双 while 循环。我是 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..)。标准输入看起来像这样:

Lorem(newline)
Ipsum(newline)
Beach(newline)
Crocodile(newline)
Crox(newline)
C(EOF)

有什么想法吗?谢谢。

crawlerEOF 时,您的外循环结束。

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

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

因此:一旦第一个'\n'被读取,内循环就不会再进入(条件拒绝'\n'),但外循环不会结束,它从不更改 crawler.

的值

结果:外循环在不读取任何输入的情况下自旋。