This question already has answers here:
How to enter the value of EOF in the terminal
                                
                                    (4个答案)
                                
                        
                                2年前关闭。
            
                    
这是我写的代码:

 int main()
 {

    int nc;
    nc=0;

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


输出列出了像1、2、3这样的字符数,而不是总计数。除去包围while循环的花括号或将'printf'语句置于循环外,根本没有输出。

最佳答案

将print语句保留在while循环之外,您将获得最终输入的字符总数,而不是每次都打印。加上您是否按下按钮来传递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。

关于c - C中输入的字符计数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52457272/

10-11 10:36