投入就放过 发表于 2022-2-13 21:30:12

C语言 22课strlen函数进阶

#include <stdio.h>

#define MAX 1024

int main()
{
      char str;
      char *target = str;
      char ch;
      int length = 0;

      printf("请输入一个字符串:");
      fgets(str, MAX, stdin);

      while (1)
      {
                ch = *target++;
                if (ch == '\0')
                {
                        break;
                }
                if ((int)ch < 0)
                {
                        target += 2;         //这里小甲鱼说一个中文占4个字节,前面target++加了1,这里为什么不是+3呢
                }
                length++;
      }

      printf("您总共输入了 %d 个字符!\n", length - 1);

      return 0;
}

isdkz 发表于 2022-2-13 21:40:57

一个中文占四个字节?你会不会是听错了

utf-8编码中文占3个字节,gbk编码中文占2个字节

傻眼貓咪 发表于 2022-2-13 22:00:47

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

int main()
{
    char a[] = "小";
    char b[] = "小甲";
    char c[] = "小甲魚";
    printf("a: %lu\n", strlen(a));
    printf("b: %lu\n", strlen(b));
    printf("c: %lu\n", strlen(c));
    return 0;
}a: 3
b: 6
c: 9

投入就放过 发表于 2022-2-13 22:06:31

isdkz 发表于 2022-2-13 21:40
一个中文占四个字节?你会不会是听错了

utf-8编码中文占3个字节,gbk编码中文占2个字节

上面写的

投入就放过 发表于 2022-2-13 22:08:37

傻眼貓咪 发表于 2022-2-13 22:00


知道怎么回事了感谢
页: [1]
查看完整版本: C语言 22课strlen函数进阶