鱼C论坛

 找回密码
 立即注册
查看: 1898|回复: 11

自写函数实现strlen 函数 问题

[复制链接]
发表于 2021-8-24 17:47:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
测试:一个中文占用4个字节的存储空间:问题如图片中标注。感谢
1629798341(1).png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-8-24 17:49:56 | 显示全部楼层
第二种写法,p+4,可以理解。
1629798521(1).png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-24 17:54:58 | 显示全部楼层
你最下面不是还有一个p++吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-24 18:37:28 | 显示全部楼层
万千只cnm 发表于 2021-8-24 17:54
你最下面不是还有一个p++吗

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


#include <stdio.h>

#define MAX 1024

int main()
{
        char str[MAX];
        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个?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-24 18:53:06 | 显示全部楼层
梦梦q 发表于 2021-8-24 18:37
不好意思,刚才截错图了。正确代码如下:

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

你为什么要length-1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-25 09:11:47 | 显示全部楼层
万千只cnm 发表于 2021-8-24 18:53
对啊 如果你中文占三个字节的话

你为什么要length-1

中文占4个字节,小甲鱼给的代码移了3个地址且length-1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-25 11:07:34 | 显示全部楼层
梦梦q 发表于 2021-8-25 09:11
中文占4个字节,小甲鱼给的代码移了3个地址且length-1

我见过 一个中文字符是两个字节的,三个字节的,没见过四个字节的
你那边一个中文字符是四个字节?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-25 13:46:37 | 显示全部楼层
应该是S1E22课后作业,第一个题,小甲鱼写错了吧?中文字符占三个字节,算上停止符是四个字节。上面写的一个中文占四个字节?
1629870240(1).png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-25 13:47:50 | 显示全部楼层
人造人 发表于 2021-8-25 11:07
我见过 一个中文字符是两个字节的,三个字节的,没见过四个字节的
你那边一个中文字符是四个字节?

应该是S1E22课后作业,第一个题,小甲鱼写错了吧?中文字符占三个字节,算上停止符是四个字节。上面写的一个中文占四个字节?
1629870240(1).png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

3 个字节
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-26 19:07:32 | 显示全部楼层

UTF-32中的码元由32位组成。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-26 19:34:47 | 显示全部楼层
jhq999 发表于 2021-8-26 19:07
UTF-32中的码元由32位组成。

嗯,我试了一下,还的确有 utf-32 这个编码格式
不过 gcc 不支持这个格式
感谢回复,^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-22 04:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表