自写函数实现strlen 函数 问题
测试:一个中文占用4个字节的存储空间:问题如图片中标注。感谢第二种写法,p+4,可以理解。 你最下面不是还有一个p++吗
万千只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个? 梦梦q 发表于 2021-8-24 18:37
不好意思,刚才截错图了。正确代码如下:
对啊 如果你中文占三个字节的话
你为什么要length-1 万千只cnm 发表于 2021-8-24 18:53
对啊 如果你中文占三个字节的话
你为什么要length-1
中文占4个字节,小甲鱼给的代码移了3个地址且length-1 梦梦q 发表于 2021-8-25 09:11
中文占4个字节,小甲鱼给的代码移了3个地址且length-1
我见过 一个中文字符是两个字节的,三个字节的,没见过四个字节的
你那边一个中文字符是四个字节?
应该是S1E22课后作业,第一个题,小甲鱼写错了吧?中文字符占三个字节,算上停止符是四个字节。上面写的一个中文占四个字节? 人造人 发表于 2021-8-25 11:07
我见过 一个中文字符是两个字节的,三个字节的,没见过四个字节的
你那边一个中文字符是四个字节?
应该是S1E22课后作业,第一个题,小甲鱼写错了吧?中文字符占三个字节,算上停止符是四个字节。上面写的一个中文占四个字节? 梦梦q 发表于 2021-8-25 13:47
应该是S1E22课后作业,第一个题,小甲鱼写错了吧?中文字符占三个字节,算上停止符是四个字节。上面写的 ...
3 个字节 人造人 发表于 2021-8-25 13:49
3 个字节
UTF-32中的码元由32位组成。 jhq999 发表于 2021-8-26 19:07
UTF-32中的码元由32位组成。
嗯,我试了一下,还的确有 utf-32 这个编码格式
不过 gcc 不支持这个格式
感谢回复,^_^
页:
[1]