C语言关于字符的问题?
#include<stdio.h>
#pragma warning(disable:4996)

int main(void)
{
    char arr[100];
    scanf("%s", arr);

    printf("%s\n", arr);

    return 0;
}

为什么输入汉字它以汉字的方式输出,汉字不是占两个字节吗?
为啥它的输出不是一个字节一个字节的输出,输入汉字就以两个字节输出。(刚学C语言,不太懂。)

3个回答

因为你是按字符串输出的而不是一个字节一个字节输出,那些字节组合在一起就表示特定的汉字。说白了怎么输入的就怎么输出。

JonathanYan
JonathanYan 回复husky66: 对,都是通用规范当然是唯一的。当然也可以按字符输出啊,就像一段话可以按具体的汉字输出也可以按拼音输出一样。
9 个月之前 回复
husky66
husky66 也就是说,每一个字符的编码都是唯一的,不管是汉字还是英文或者符号,所以输出就是唯一的?但是你可以强制它不是这样输出?
9 个月之前 回复

你可以注意下:printf 函数中你写的传入参数是**arr** ,**arr**是数组的名称,C 语言对于“数组名称” 的处理类似于处理 “指针”(区别在这里不重要)传入一个指针,并且打印方式为“%s”当然会打印整个指针内容,直到** EOF(结束符)**。C/C++你可以设置你的输出方式或者重写一个打印函数。

C语言的话汉字是gb2312编码,也就是两个字节的数据,一个字节用的是字符型,那么两个字节就是字符串型了,C语言识别到这两个数据组合在一起是一个汉字编码的话就会输出汉字了。

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