m0_61251929 2021-08-31 14:17 采纳率: 40%
浏览 27

为什么统计任意文本的字数最后出来的结果不正确呢

int count;
char c;
FILE *fp;
fp=fopen("number.txt","r");
if(fp==NULL)
    {
         printf("Can't open the file!\n");
         exit(0);
    }
while(!feof(fp))
{
    count=0;
    while ((c=fgetc(fp))!=EOF)
    {
        if (c < 0)
        count++;
    }
}
fclose(fp);
printf("%d\n", count / 2);

img

img

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2021-08-31 14:23
    关注

    c<0的判断并不靠谱,中文是两个字节,其中首字节肯定大于0x80,但第二个字节不一定小于0x80啊
    你应该判断前一个字节小于0时,跳过下一个字节

    int s = 0;
    while ((c=fgetc(fp))!=EOF)
        {
            if(s == 1)
            {
                s = 0;
                continue;
            }
            count++;
            if(c < 0)
                s = 1;
          }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 8月31日

悬赏问题

  • ¥15 这种情况的伯德图和奈奎斯特曲线怎么分析?
  • ¥50 paddleocr带斜线的0很容易识别成9
  • ¥15 电子档案元素采集(tiff及PDF扫描图片)
  • ¥15 flink-sql-connector-rabbitmq使用
  • ¥15 zynq7015,PCIE读写延时偏大
  • ¥15 使用spss做psm(倾向性评分匹配)遇到问题
  • ¥20 vue+UEditor附件上传问题
  • ¥15 想做个WPS的自动化代码,不知道能做的起不。
  • ¥15 uniApp,生成安卓安卓包后,黑暗主题中间内容不生效,底部导航正常
  • ¥15 斯坦福自动漂移非线性模型反解