来自 "The C Programming Language"的字符计数器未按预期工作

标签 c character

我正在通读“The C Programming Language”,并使用 CodeBlocks 完成所有练习。但是我无法让我的角色计数器工作,尽管它是直接从书中复制的。代码如下所示:

#include <stdio.h>

main(){
    long nc;

    nc = 0;

    while (getchar() != EOF)
        ++nc;
    printf("%ld\n", nc);
}

当我运行该程序时,它会打开一个我可以输入的窗口,但是当我按下回车键时,它会跳过一行,我可以继续输入,但我认为它应该打印字符数。

知道出了什么问题吗?

最佳答案

这一行:

while (getchar() != EOF)

意味着它一直读取直到输入结束——不是直到一行结束。 (EOF 是一个特殊常量,意思是“文件结尾”。)您需要结束输入(可能使用 Ctrl-D 或 Ctrl-Z)以查看输入的字符总数。

关于来自 "The C Programming Language"的字符计数器未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12134756/

相关文章:

c++ - C++链表问题。数据类型之间有冲突?没有匹配的构造函数?

将返回的 char 转换为 int

c++ - 为什么 C++ 中 char 不被视为数字?

Python ctypes : passing to function with 'const char ** ' argument

c - 为什么打印我的数组后控制台打印 "null pointer assignment"?

apache - 使用 htaccess 从 URL 中删除字符

c - C 中反转字符串时出现奇怪的字符

r - 基于字符比较查找数据框中元素的索引(使用例如 grepl)

c - 生产者消费者同步11

r - R 中字符的对象大小 - R 全局字符串池如何工作?