一只高傲的鹤 2022-01-07 13:36 采纳率: 66.7%
浏览 27
已结题

getchar() != \n 和 while语句结合统计字符数,其中count = count + 1的作用?

今天学了一个统计字符数的代码(使用的编译器是code blocks 20.03):

#include <stdio.h>
 
int main()
{
    int count = 0 ;
 
    printf("请输入英文字符:");
 
    while ( getchar() != '\n')
    {
        count = count + 1;//这个算式不是用来计数的吗?为什么中文会计对应两个字符?
    }
 
    printf("你总共输入了%d个字符", count);
 
    return 0;
}

本来我理解 count = count + 1 这个表达式是用来统计字符的输入次数。

但是我在试着输入中文的时候,程序统计中文是2个字符,结果如下图:

img

img

所以,我想重新了解一下这个程序是怎么统计字符的?能否对代码的每一个作用部位有一个详细解释?谢谢

按结果推导,输入一个中文的时候是计了两次数,这为什么?为什么程序会计两次输入?

  • 写回答

3条回答 默认 最新

  • 书山客 2022-01-07 13:41
    关注

    while ( getchar() != '\n')
    getchar获取键盘输入,只要不是回车就进入循环给count加一
    中文一个字占用两个字节,英文字母一个占用一个字节,所以中文计数是两倍

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月15日
  • 已采纳回答 1月7日
  • 修改了问题 1月7日
  • 创建了问题 1月7日

悬赏问题

  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 用hfss做微带贴片阵列天线的时候分析设置有问题
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据