汉字属于字符还是字符串?

汉字属于字符还是字符串?在使用库函数printf打印汉字的时候要怎么用π_π?请求指点ಥ_ಥ。

算字符串,占两个字符,还有一般来说要检测汉字不能直接字符串数组一个个调用,只能整个拿来比较
比如:s为字符串,输入s="啦啦啦",要比较就是if(s="啦啦啦")cout<<"2333"; 这样就能比较。如果是cout<<s[0];就会出错

#define MAXSIZE 20
int main()
{
    char ch[MAXSIZE] = { "赵钱孙李周吴郑王" };
    int j = 1;
    for (int i = 0; i <= MAXSIZE; i += 2) {
        if (ch[i] =='\0')
        {
            break;
        }
        printf("第%d个姓氏是:%c%c\n", j++, ch[i], ch[i + 1]);
    }
}

这样可以打印汉字

字符串

測試代碼:

#include<stdio.h>
#include <string.h>
int main() {

    // char a2[2] = "漢字";
    // warning: initializer-string for array of chars is too long
    // char a3[3] = "漢字";
    // warning: initializer-string for array of chars is too long

    char a4[4] = "漢字";

    char a5[5] = "漢字";
    a5[4] = '\0';

    printf("%%s     ['%s'] \n", &a4);
    printf("%%c     ['%c'] \n", &a4);
    printf("%%c[0]  ['%c'] \n", &a4[0]);
    printf("%&a4    ['%s'] \n", &a4);
    printf("%&a4[0] ['%s'] \n", &a4[0]);

    printf("\n");

    printf("%%s       ['%s'] \n", &a5);
    printf("%&a5      ['%c'] \n", &a5);
    printf("%&a5 c[0] ['%c'] \n", &a5[0]);
    printf("%&a5      ['%s'] \n", &a5);
    printf("%&a5[0]   ['%s'] \n", &a5[0]);
//int i; char a[80] = "Windows_xp,word_2003,VC_6.0";
    /*
%s     ['漢字!']
%c     ['?']
%c[0]  ['?']
&a4    ['漢字!']
&a4[0] ['漢字!']

%s       ['漢字']
&a5      ['?']
&a5 c[0] ['?']
&a5      ['漢字']
&a5[0]   ['漢字']

    */
}

結果截圖:

img

汉字属于字符还是字符串?
首先你得知道C语言中字符和字符串的区别:
1、C中字符,通常指的是 's' '8' '-' 这种占用1个字节空间的字符,使用 char 关键字表示,是一种数据类型
2、C中的字符串,通常是指由双引号括起来的内容:"hello world" ,表示由很多字符组成,且末尾必须是 '\0'。即判断算不算字符串的核心点是,末尾是否是 '\0'。字符串在C语言中不是数据类型,是一种数据存储方式。

示例1: 'a' 和 "a"
存储上:'a' --> 97 --> 1个字节空间:存放97 ('a' 的ascii码值)
"a" --> 'a' '\0' --> 2 个字节空间
所以 "a" 是字符串

汉字在C中如何表示? 核心:编码
如字符的表示方式是:ascii编码
汉字的表示方式是:GBK编码 (通常)
通常在C中,使用2个字节表示一个汉字

字符使用 '' 括起来表示
而汉字占用2个字节,且C语言没有单独的符号括起来表示,所以在C中没有单独存在的汉字
所以C中常用 "我" 这种字符串的方式去表示
"我" 是字符串,但是它占用3个字节。

所以,汉字不是字符,但它由2个字符(非ASCII字符)组成;汉字不是字符串,但它在C中只能使用字符串去表示

使用库函数printf打印汉字的时候要怎么用?
通常如何输出的控制台支持汉字,可以直接使用 printf("我爱中国!\n"); 这种形式即可
而如果控制台不支持汉字,使用上面的形式,控制台会出现乱码字符

如有用,望采纳,感谢