C中输入的字符计数[重复]

Posted

技术标签:

【中文标题】C中输入的字符计数[重复]【英文标题】:Character counting of input in C [duplicate] 【发布时间】:2018-09-22 13:48:06 【问题描述】:

这是我写的代码:

 int main()
 

    int nc;
    nc=0;

    while(getchar()!=EOF)
    
        ++nc;    
        printf("%i\n",nc);
    
    return 0;

输出列出了 1、2、3 等字符的数量,而不是给出总数。删除包含 while 循环的大括号或将 'printf' 语句放在循环之外会导致根本没有输出。

【问题讨论】:

您在读取每个字符后打印一个计数器。第三个应该是你的“回报”。你期望的输出是什么? 欢迎来到 Stack Overflow。请尽快阅读About 和How to Ask 页面。您应该在问题中显示您的代码 - 以及输出。请不要使用指向纯文本图像的链接。请直接在问题中显示您的代码 - 使用编辑框上方的 按钮将代码缩进为代码。显示代码后,您的问题很容易解决;当我们看不到您的代码时无法修复(除了观察您在循环内打印并且应该在循环外打印)。 你的问题是你不知道如何生成EOF 【参考方案1】:

将 print 语句保留在 while 循环之外,您将获得最终输入的字符总数,而不是每次都打印。 PLUS您是否按下按钮传递EOF(Linux 中为ctrl + d)以便循环结束?

除此之外,使用 int 从 getchar() 获取值并将 while 循环更改为:

 #include<stdio.h>

 int main(void)
 
     int i;

     while((i=getchar())!=EOF)
     
         if(i!='\n')
             ++nc;
     
     printf("%d\n",nc);
     return 0;
 

否则,由于最后按下了“\n”,您将获得比实际输入多 1 的字符数。

【讨论】:

感谢您的回答。但是,使用 int i 会导致读取“未使用的变量 i”的错误。此外,由于某种原因,还有另一个错误,“变量 'nc' 已设置但未使用”。 @SaraSethia 这些是警告而不是错误 - 很好,您只需要打印 nc 非常感谢。不过我还有一个问题。为什么 While 循环需要一个 If 语句?我的意思是,为什么没有 If 语句就不能工作? @SaraSethia 如果您传递EOF 字符来结束句子而不是使用换行符\n,则可以在没有if 语句的情况下使其工作。 关于此的另一篇文章建议使用 ctrl+D 甚至 ctrl+Z。在我的情况下两者都不起作用。

以上是关于C中输入的字符计数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C - 计数元素(绑定检查) - 数组 [重复]

C语言 输入一个字符串 去掉重复的字符,输出无重复的

纠错:C语言:删除重复字符。

EXCEL多条件忽略重复值忽略空值计数

Vector中的C ++字符串输入[重复]

C语言,输入一个字符串,统计重复出现某个字母的次数。