这是代码:
#include <stdio.h>
int main(void) {
int nextChar;
int numLines = 0;
while ((nextChar = getchar())!= EOF) {
if (nextChar == '\n') {
++numLines;
}
}
printf("The\nsky\nis\nblue\n");
printf("%d lines read.\n", numLines);
return 0;
}
它运行,但返回读取的 0 行。我试过把“天空是蓝色的”文字放在一堆不同的地方,但似乎没有任何效果。
代码在书中显示,但没有
printf("The\nsky\is\blue.\n");
但输出显示为:
The
sky
is
blue.
4 lines read.
有什么建议么??
最佳答案
您的程序正在寻找 EOF
以摆脱 while
循环。要输入 EOF,请使用:
^Z (Ctrl + Z) in Windows
^D on Unix-like systems
CTRL + D 在 Ubuntu 上对我有用。我已经在我的机器上运行了你的代码。要获得所需的输出,您需要输入 -
The (Press Enter)
Sky (Press Enter)
is (Press Enter)
Blue (Press Enter)
(and finally send EOF)
按
ENTER
将向 Ubuntu 上的程序发送 '\n' 字符。 Windows 使用\r\n 表示按下了回车键,而 Linux 和 Unix 使用\n 表示按下了回车键。关于c - 无法计算输出中的行数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38212306/