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)
有什么想法吗?谢谢。
当 crawler
为 EOF
时,您的外循环结束。
当 crawler
为 '\n'
或 EOF
时,您的内部循环结束。
只有内部循环读取输入(通过调用getchar
)。
因此:一旦第一个'\n'
被读取,内循环就不会再进入(条件拒绝'\n'
),但外循环不会结束,它从不更改 crawler
.
的值
结果:外循环在不读取任何输入的情况下自旋。
我正在使用这个双 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)
有什么想法吗?谢谢。
当 crawler
为 EOF
时,您的外循环结束。
当 crawler
为 '\n'
或 EOF
时,您的内部循环结束。
只有内部循环读取输入(通过调用getchar
)。
因此:一旦第一个'\n'
被读取,内循环就不会再进入(条件拒绝'\n'
),但外循环不会结束,它从不更改 crawler
.
结果:外循环在不读取任何输入的情况下自旋。