为什么在一个文字占四个字节中,指针要向后移两位啊,不是应该移动三位吗?

1

img

img


求详细解答,本人刚开始学,只要能举简单的例子,让我知道原理

img

一个英文字符占1个字节,而一个中文汉字占2或3个字节(gbk编码占2个字节,utf-8编码占3个字节),
char类型长度是1个字节, target++是每次移动1个字节(char类型长度), 所以一个中文汉字要target++移动2或3次

输入I love FishC.com!一共是17个字符是对的,
等于{'I',' ','l','o','v','e',' ','F','i','s','h','C','.','c','o','m','!'}
鱼C工作室-FishC.com中有11个英文字符和 4个中文汉字(比如编码为gbk编码占2个字节) ,应该是11 + 4*2 = 19个字符,
等于{'鱼的前半个字节','鱼的后半个字节'.'C','工的前半个字节','工的后半个字节','作的前半个字节','作的后半个字节','室的前半个字节','室的后半个字节','-','F','i','s','h','C','.','c','o','m','!'}

你书上写15个字符是写错了

#include<stdio.h>

int main()
{
    char str[1034];
    char *target=str;
    int len = 0;
    fgets(str,1034,stdin);
    while (*target++ !='\0')
    {
        len++;
    }
    printf("共输入%d个字符\n",len-1);
    return 0;
}

img

img

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

一个文字,如果是char类型只占1个字节