怎么在C语言里用printf输出一个中文

char*p="张三";现在我想得到那个"张"字,而不是整个字符串,代码该怎么写?我用sizeof()测试了下:printf("%d",sizeof("张"));结果是3... char * p = "张三";
现在我想得到那个"张"字,而不是整个字符串,代码该怎么写?
我用sizeof()测试了下:

printf("%d ",sizeof("张"));

结果是3,请问这又该作何解释?怎么会是3呢?
ps:我是在Dev-C++环境下运行的
展开
 我来答
kaixingui2012
2015-09-21 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6393万
展开全部

一般情况下,应用程序采用的字符集为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得到的是字符串有效字符长度(字节数),不包括结束符,所以,长度是两个字节

therandomworld
2009-12-19 · TA获得超过812个赞
知道小有建树答主
回答量:724
采纳率:0%
帮助的人:547万
展开全部
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
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhangdw2006
2009-12-19 · TA获得超过1614个赞
知道大有可为答主
回答量:2521
采纳率:0%
帮助的人:1857万
展开全部
张占用两个字节你就想象成abcd你要输出ab是一样的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
h68889
2009-12-19 · 超过10用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:60.8万
展开全部
给我分,加我HI为好友,让我帮你写。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式