447975661 发表于 2021-11-21 12:45:45

统计字符数代码,麻烦帮助。测试输出不对

#include <stdio.h>
#include<string.h>

int main()
{
    //统计字符数目
    int length=0,ch;
    char str,* target = str;
    printf("请输入一个字符串:");
    fgets(str, 1024, stdin);
    while (1)
    {
      ch = *target++;
      if (ch == '\0')
      {
            break;
      }
      if ((int)ch < 0)
      {
            target = target + 2;
      }
      length = length + 1;
    }
    printf("%d", length);
    return 0;
}
//测试输入 你好
//测试输入 a

jackz007 发表于 2021-11-21 12:52:54

本帖最后由 jackz007 于 2021-11-21 12:57 编辑

      这个代码在 Linux 系统下没问题,在 Windows 下有问题。
      if ((int)ch < 0)
      {
            target = target + 1 ;// 如果是在 Windows 下,这一句要改
      }
      Linux 系统采用 utf-8 编码,每个汉字占用 3 个字节,Windows 系统采用 GB2312 编码,每个汉字占用 2 个字节。
页: [1]
查看完整版本: 统计字符数代码,麻烦帮助。测试输出不对