使用 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
。
我正在根据 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
。