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

时间:2017-01-25 02:33:35

标签: c getchar

我正在从 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;
}

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

修改:我希望getchar()在程序完成获取第一个单词的字符时返回EOF

3 个答案:

答案 0 :(得分:4)

当您按enter / return时,您将根据您使用的是unix / osx还是Windows来生成\n\r\n。你不是一代EOF角色。

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

答案 1 :(得分:0)

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

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

如果你有一个名为的文本文件,&#34; data.txt&#34;其中包含以下文字:

  

Hello World。你好吗?

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

enter image description here

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

答案 2 :(得分:-2)

如果您将EOF更改为\n字符,则按Enter键后将执行此操作:

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

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