梦梦q 发表于 2021-8-24 17:47:01

自写函数实现strlen 函数 问题

测试:一个中文占用4个字节的存储空间:问题如图片中标注。感谢

梦梦q 发表于 2021-8-24 17:49:56

第二种写法,p+4,可以理解。

万千只cnm 发表于 2021-8-24 17:54:58

你最下面不是还有一个p++吗

梦梦q 发表于 2021-8-24 18:37:28

万千只cnm 发表于 2021-8-24 17:54
你最下面不是还有一个p++吗

不好意思,刚才截错图了。正确代码如下:


#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++;                        //地址+1
                if (ch == '\0')
                {
                        break;
                }
                if ((int)ch < 0)
                {
                        target += 2;                   //地址+3
                }
                length++;
      }

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

      return 0;
}


地址只向后移了3个?

万千只cnm 发表于 2021-8-24 18:53:06

梦梦q 发表于 2021-8-24 18:37
不好意思,刚才截错图了。正确代码如下:




对啊 如果你中文占三个字节的话

你为什么要length-1

梦梦q 发表于 2021-8-25 09:11:47

万千只cnm 发表于 2021-8-24 18:53
对啊 如果你中文占三个字节的话

你为什么要length-1

中文占4个字节,小甲鱼给的代码移了3个地址且length-1

人造人 发表于 2021-8-25 11:07:34

梦梦q 发表于 2021-8-25 09:11
中文占4个字节,小甲鱼给的代码移了3个地址且length-1

我见过 一个中文字符是两个字节的,三个字节的,没见过四个字节的
你那边一个中文字符是四个字节?

梦梦q 发表于 2021-8-25 13:46:37

应该是S1E22课后作业,第一个题,小甲鱼写错了吧?中文字符占三个字节,算上停止符是四个字节。上面写的一个中文占四个字节?

梦梦q 发表于 2021-8-25 13:47:50

人造人 发表于 2021-8-25 11:07
我见过 一个中文字符是两个字节的,三个字节的,没见过四个字节的
你那边一个中文字符是四个字节?

应该是S1E22课后作业,第一个题,小甲鱼写错了吧?中文字符占三个字节,算上停止符是四个字节。上面写的一个中文占四个字节?

人造人 发表于 2021-8-25 13:49:17

梦梦q 发表于 2021-8-25 13:47
应该是S1E22课后作业,第一个题,小甲鱼写错了吧?中文字符占三个字节,算上停止符是四个字节。上面写的 ...

3 个字节

jhq999 发表于 2021-8-26 19:07:32

人造人 发表于 2021-8-25 13:49
3 个字节

UTF-32中的码元由32位组成。

人造人 发表于 2021-8-26 19:34:47

jhq999 发表于 2021-8-26 19:07
UTF-32中的码元由32位组成。

嗯,我试了一下,还的确有 utf-32 这个编码格式
不过 gcc 不支持这个格式
感谢回复,^_^
页: [1]
查看完整版本: 自写函数实现strlen 函数 问题