我正在学习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。
当您按时,输入
/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。