提问者:小点点

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


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

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

编辑:当程序完成获取第一个单词的字符时,我希望< code>getchar()返回< code>EOF。


共3个答案

匿名用户

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

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

匿名用户

在命令提示符中输入EOF字符总是很棘手。通过在Windows上使用Ctrl Z或在Unix上使用Ctrl D,按照@Sarvex的建议去做就可以了。

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

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

你好世界。你过得怎么样?

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

我收到的输出是,< code >字符数是31。

匿名用户

如果将 EOF 更改为 \n 字符,它将在按回车键后完成工作:

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

PS:使用保龄球建议进行了改进@David。