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。这两种方法在我的情况下都不起作用。