使用 getchar() 方法计算输入中的字符数

Counting the number of characters in input with getchar() method

我正在根据 C 编程语言 学习 C。我试图使以下代码工作:

#include <stdio.h>
int main() {
    int char_count = 0;
    while (getchar() != EOF)
        ++char_count;
    printf("Number of chars are %ld ", char_count);
    return 0;
}

我构建并 运行 代码。然后,我输入一个随机单词并按下回车键。我希望在下一行看到一个数字,但是发生的是光标移动到下一行。当我输入一个新词时,同样的事情发生了。我错过了什么?

编辑:当程序完成获取第一个单词的字符时,我希望 getchar() 到 return EOF

当您按下 enter/return 时,您将根据您使用的是 unix/osx 还是 [=23] 生成 \n\r\n =].你不是一代 EOF 人物。

要生成 EOF 字符,您需要在 unix/osx 上按 ^D 或在 windows 上按 ^Z

如果把EOF改成\n,按回车键后会起作用:

int c = 0;
while (((c = getchar()) != '\n') && (c != EOF))
    ++char_count;

P.S:使用@David Bowling 建议进行了改进。

在命令提示符中输入 EOF 字符总是很棘手。通过在 Windows 上使用 Ctrl+Z 或在 Unix 上使用 Ctrl+D 来执行@Sarvex 推荐的操作即可。

您可以在不对代码进行任何更改的情况下做的另一件有趣的事情是,您可以将输入从文本文件重定向到您的程序,而不是让您的程序接受来自命令提示符的输入。

如果您有一个名为 "data.txt" 的文本文件,其中包含以下文本:

Hello World. How are you doing?

编译代码后你的程序名称是charCount。您可以执行以下操作:

我收到的输出是,Number of chars are 31