我正在从 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
。
答案 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
。您可以执行以下操作:
我收到的输出是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建议。