一般情况下,应用程序采用的字符集为gbk, gb2312,该字符集中一个汉字由两个字节组成,所以在普通的C语言中,汉字是按字符串进行存储和输出的。(另:还有utf8字符集,一个汉字由三个字节组成,详情可查阅utf8字符集)
char * p = "张三";
输出多个中文:
printf("%s\n", p ); //按字符串输出完整的数据
输出一个中文:
printf("%c%c", *p, *p+1 ); //按字符输出,同时输出两个字节
输出一个中文串的长度:
printf("sizeof(p)=%d\n", sizeof(p) ); //p变量是指针,所以,这里输出的是指针的宽度,一般32位机是4
printf("sizeof(张)=%d\n", sizeof("张") ) ; // "张"是个常量字符串,sizeof是得到其占内存的大小,字符串都有一个结束符,一个”张“字占两字节,加上字符串结束\0,所以,占三个字节的内存空间
printf("length of (张)= %d\n", strlen("张") ); //strlen得到的是字符串有效字符长度(字节数),不包括结束符,所以,长度是两个字节
char * p = "张三";
char s[3];
s[0]=p[0];
s[1]=p[1];
s[2]='\0';
printf("%s",s);//输出汉字“张”
关于为什么sizeof("张")==3 ?
因为"张"是一个字符串,C语言中字符串都有结束符'\0'。 这里“张”占2个byte,字符串结束符占1byte,所以是3byte
张占用两个字节你就想象成abcd你要输出ab是一样的
给我分,加我HI为好友,让我帮你写。