char型为什么不能输出一个汉字?改成char[]后下面的sex输出的为什么还不对?

struct stu
{
int num;
char name[20];
int age;
char sex[20];
float score;
}stu2,stu1={101,"tiandongliang",18,'男',100};
stu2=stu1;
printf("number=%d\nname=%s\n",stu2.num,stu2.name);
printf("age=%d\nsex=%s\n",stu2.age,stu2.sex);

4个回答

终端编码问题,应该不是程序问题。

havedream_one
havedream_one 回复cesuokanc: 对的,字符型都是''引起来,而字符串都是用“”引起来,这样编译器也就知道该怎么存数据了,如果是'',就分配一个字节;如果是"",就分配字符串长度+1个字节,最后的那个字节就是用来存储字符串结束标志的
5 年多之前 回复
cesuokanc
cesuokanc 回复tianliangcsdn: 就是说,字符串是用双引号括起来的,比如“male”,而不是'male'
5 年多之前 回复
havedream_one
havedream_one 回复tianliangcs把'男'改成"男"
5 年多之前 回复
tianliangcsdn
tianliangcsdn 能说的详细一点吗?我是刚学的菜鸟!
5 年多之前 回复

C语言的char是单字节的,而汉字要用两个字节,char存不下汉字的。不像java的char型,java的char型是两个字节

tianliangcsdn
tianliangcsdn 那上面改成字符串型为什么也不对呀
5 年多之前 回复

汉子字占两字节,你的char是一个字节的,如果采用unicode编码,可以放一个汉字

楼上正解,用单引号括起来的表明它是一个字符即可以用char来表示,如'A',而男是占用两个char所以是字符串,要用双引号""

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐