1
一个英文字符占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;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
一个文字,如果是char类型只占1个字节