这是代码:

#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/

10-15 02:21