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中输入的字符计数[重复]的主要内容,如果未能解决你的问题,请参考以下文章