C语言怎么给一个变量赋值中文?

可不可以这样b=汉字
2025-02-13 12:28:15
推荐回答(4个)
回答1:

可以通过给字符数组赋值来解决。就是变量b需要定义为字符数组。

例如:

#include 
int main()
{
char b[]="汉字";
printf("%s",b);
return 0;
}

//运行结果:

C语言中不存在你图片中写的这种语法,既然学C语言,就应该按照C语言要求的格式来进行书写,不能自己强行发明创造。

回答2:

在 C 语言编程中,关于给某个具体变量赋值中文的问题,根据我的编程经验,你可以这样编程不容易出错,见如下程序代码:
#include
#include
#define MAX 50 /* 定义一个宏 MAX,该宏定义可以根据需要自行进行修改 */
void main( )
{
unsigned char my_hanzi[MAX] ; /* 在这里必须要注意:由于所需要处理的信息是汉字信息,但是汉字信息的 ASCII 码的最高位为 1,故在这里必须要将变量定义成无符号字符型数组:unsigned char my_hanzi[MAX] */

gets(my_hanzi) ; /* 输入一个汉字字符串,但是最大长度不能够超过 MAX 个字符,否则会出错 */

puts(my_hanzi) ; /* 输出刚刚在上面从键盘上输入的汉字字符串 */

strcpy(my_hanzi, "这是一个汉字字符串的应用" ) ; /* 将一个新的汉字字符串复制给变量 my_hanzi */

puts(my_hanzi) ; /* 再输出刚刚复制的新的汉字字符串 */

}
至于说其它的对汉字信息的各种处理,均可以参考该程序。

回答3:

你所希望赋值的其实并不是中文,而是表示成中文的“星座”。星座只有十二个,而中文字有成千上万个,所以正确的做法应该是用 enum。但是enum之能使用英文标识符,所以你接下来可以选择拼音,或者英文,或者两者皆有的方式。

enum {
    // 英文
    Aries = 0, 
    Taurus, 
    Gemini, 
    Cancer, 
    Leo, 
    Virgo, 
    Libra, 
    Scorpio, 
    Sagittarius, 
    Capricorn, 
    Aquarius, 
    Pisces, 
    // 拼音
    Baiyangzuo = 0, 
    Jinniuzuo, 
    Shuangzizuo, 
    Juxiezuo, 
    Shizizuo, 
    Chunvzuo, 
    Tianpingzuo, 
    Tianxiezuo, 
    Renmazuo, 
    Moxiezuo, 
    Shuipingzuo, 
    Shuangyuzuo, 
}

回答4:

一个汉字占用的内存至少为2字节,因此对多字节字符集和宽字符集来说,表示汉字的方式也略有不同:

多字节字符集的基本数据类型是char,占1字节,因此char无法表示一个汉字,只能用字符串来表示:

char a = '你'; //错误,一个汉字至少占2字节
char b[] = "好"; //正确

宽字符集的基本数据类型是wchar_t,通常占2字节,采用Unicode编码,可以表示汉字:

wchar_t a = L'你'; //正确
wchar_t b[] = L"好"; //正确

此外,采用多字节字符集表示汉字时,还需要注意源代码文件本身的编码是否和系统默认的字符集一致,否则可能导致乱码。例如在Windows下,源代码文件应该用GB-2312字符集编码。如果用UTF-8编码,就可能导致编译或运行时的乱码问题。