C语言中输入的字符计数
这是我写的代码:C语言中输入的字符计数,c,C,这是我写的代码: int main() { int nc; nc=0; while(getchar()!=EOF) { ++nc; printf("%i\n",nc); } return 0; } 输出将列出字符数,如1、2、3,而不是给出总计数。删除while循环中的花括号或将“printf”语句放在循环外都不会产生任何输出。将print语句放在while循环外,您将获得最终输入的字符总数,而不是
int main()
{
int nc;
nc=0;
while(getchar()!=EOF)
{
++nc;
printf("%i\n",nc);
}
return 0;
}
输出将列出字符数,如1、2、3,而不是给出总计数。删除while循环中的花括号或将“printf”语句放在循环外都不会产生任何输出。将print语句放在while循环外,您将获得最终输入的字符总数,而不是每次打印的字符数PLUS是否按下按钮传递
EOF
(ctrl+d
在linux中)以结束循环
除此之外,使用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;
}
#包括
内部主(空)
{
int i;
而((i=getchar())!=EOF)
{
如果(i!='\n')
++数控;
}
printf(“%d\n”,nc);
返回0;
}
否则,由于末尾按了“\n”,您将获得比实际输入多的字符数1。读取每个字符后,您将打印一个计数器。第三个应该是你的“回报”。您希望得到什么输出?欢迎使用堆栈溢出。请尽快阅读这两页。您应该在问题中显示您的代码,以及输出。请不要将指向图像的链接用于纯文本。请直接在问题中显示您的代码-使用编辑框上方的
{}
按钮将代码缩进为代码。当代码显示时,您的问题很容易解决;当我们看不到您的代码时无法修复(除了观察到您正在循环内打印而应该在循环外打印)。您的问题是您不知道如何生成EOF。谢谢您的回答。但是,使用int i会导致读取“未使用的变量i”的错误。此外,由于某些原因,还有另一个错误,“变量'nc'设置但未使用”。@SaraSethia这些是警告而不是错误-很好,您只需要打印nc
,非常感谢。不过我还有一个问题。为什么While循环需要If语句?我的意思是,为什么没有If语句它就不能工作?@SaraSethia如果你传递EOF
字符来结束句子,而不是使用换行符\n
,你就可以在没有If
语句的情况下工作。另一篇关于这一点的帖子建议使用ctrl+D甚至ctrl+Z。这两种方法在我的情况下都不起作用。