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

作者&投稿:月盛 (若有异议请与网页底部的电邮联系)
C语言中,想要给一个变量个赋值为汉字,该变量应该是什么数据类型的啊?~

从汉字存储来说:
1。如果你输入的汉字时多字节(ANSI),那么它占用两个字节,需要用short类型。
2。如果你输入的汉字时宽字节(UNICODE),那么它也是占用连个字节,使用short就可以了。
3。如果你输入的汉字是多字节(UTF8),那么很不幸,它可能是1~3字节,所以最好使用long类型。

char - 1字节
short - 2字节
long - 4字节

贴出你的代码,再来说事。

不行,因为char是C语言中可容纳单个字符的一种基本数据类型;
别说汉字了,就是两个字母也不行。可以使用 字符数组(char a[ ]=“汉字”;) 或者 字符串变量(string a=“汉字";) 来存蓄汉字。

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

例如:

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

//运行结果:

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



在 C 语言编程中,关于给某个具体变量赋值中文的问题,根据我的编程经验,你可以这样编程不容易出错,见如下程序代码:
#include <string.h>
#include <stdio.h>
#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) ; /* 再输出刚刚复制的新的汉字字符串 */

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

你所希望赋值的其实并不是中文,而是表示成中文的“星座”。星座只有十二个,而中文字有成千上万个,所以正确的做法应该是用 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, 
}


一个汉字占用的内存至少为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编码,就可能导致编译或运行时的乱码问题。




怎么在易语言在子程序中新建一个变量
全局变量的话直接在窗口程序集1的旁边用鼠标点一下,然后回车就新建了一个变量在下面,然后输入变量名即可。局部变量在按钮1下面直接写代码就行了,当然把你要用的局部变量写进去,然后在语句的尾回车,它会提示你选择那个变量的类型和是局部还是全局或者说是程序集。上面第二种最常用的新建方法。不需要...

C语言 如何把一个变量值赋给一个数组?
1.整型值赋值给整型数组:int value=2;\/\/定义一个变量,并赋值 int array[10];\/\/定义一个数组 array[0]=value;\/\/将变量值赋值给该数组。2.整型值赋值给字符数组:int value=3;char str[10];str[0]=value+'0';\/\/赋值给单个字符 itoa(value,str,10);\/\/数字转字符串函数itoa,10代表十...

C语言中能不能把颜色赋值给一个变量?怎么弄的
当然可以,只要把blue,red这样的代码赋给变量不就行了吗,具体颜色值你可以找一份资料查找看看,而你所说的随机数严格的说是伪随机数,也就是说电脑给出的随机数是按照一定算法算出来的,只不过它需要经过很多数据才能找到规律,具体代码我就不给你写了,因为有也好久没有写过关于C的代码了,只记得...

在c语言中如何定义一个变量,使它的值为一个句子。如果用户输入这个句 ...
你所说的句子是指的字符串吧, C语言中字符串是用字符数组来表示的.include<stdio.h>#include<string.h>int main(){ char s[20]; gets(s); if(strcmp(s, "hello world")==0)\/\/如果输入的是字符串"hello world" printf("right\\n"); else printf("wrong\\n"); return 0;...

C语言实现读取.dat或.txt的数据并赋值给一个real变量
你只有一个数据,不需要循环读。float velocity;FILE *fp;fp=fopen("tmp.dat","r");fscanf(fp,"%f",&velocity);fclose(fp);就可以了。double velocity; 则用 格式 %lf -- fscanf(fp,"%lf",&velocity);数据传递可以通过全局量:float velocity;void A(...);void B(...);--- ...

C语言中能不能将一个整数赋给一个指针变量?
系统内存使用是操作系统规定的,如果你希望直接操作内存,就必须了解系统的内存的分配情况,否则造成的损失可能是致命的。你的举例是不完整的,如果说*point_1=100是非法的,完整语句应该是int *point_1=100,之所以非法是因为100不是用户可以操控的内存区域。*p = 1之所以数合法的,是因为将p所指的内存...

c语言中把字符串赋给字符变量怎么编辑
给指针p1,然后把这个变量(据我推测这个变量应该是某个数组的第一个元素)所代表地址后的第m-1个变量的地址给p2(这个地址是该数组最后一个元素的地址)。当p1<p2(也就是p1所指向元素在p2之前)时执行以下循环:把p1所指向元素的值赋给变量S再让p1指向当前元素的下一个元素,再把p2所指向元素的...

在C语言里边,如何限定一个变量的赋值范围
用scanf可能实现不了你的要求。你可以用fgets或者fread将输入读近来,然后解析成数字,判断其范围,满足条件的话,赋值给a。int a;char str[10];fgets(str, 10, stdout);int b = -1;b = atoi(str);if(b == 0 || b == 1)a = b;...

C语言中 char的空字符是什么 怎么给一个char类型变量赋空值
NULL在32位操作系统的内存中的表现就是0x0000 0000 0000 0000 0000 0000 0000 0000,即32位都为0,其值其实为0 所以,有 int i = 0; \/\/让i为NULL char c = '\\0'; \/\/'\\0'在内存中的表现也为一串0,等价与0和NULL

定义一个字符型变量ch,给ch赋值48,分别用%c,%d来输出ch的值?
先看一下结果:ch实际保存的是十进制数48,同时也是字符’0‘的ASCII码。在C语言里面char数据类型其实是一个byte的整型数值,同时表征的也是标准字符的ASCII码。因此给char赋初值的时候可以用字符常量,也可直接用数值。例如,十进制数,char ch = 48;16进制数,char ch = 0x30;字符常量,char ch ...

大庆市15025172469: 求一段c语言代码,定义一个变量,然后通过键盘给这个变量赋一个中文字符作为值,例如”字” -
赧影奥维: typedef char[3] ansichar; ansichar c; scanf("%s",c); printf("%s",c);

大庆市15025172469: C语言中赋值语句的语法是怎样的 -
赧影奥维: 赋值的语法规则就是: 数据类型 变量名 = 表达式表达式可以理解为一个值或一个计算公式就行,表达式加一个英文符号分号就是语句. 例如: 我们今天要用到的,我买了几斤苹果. 就可以这样写: 方式一: Int apple_count = 0; //告诉计算...

大庆市15025172469: c语言,如何在变量中存储中文词语或句子 -
赧影奥维: 用字符串存储就可以 比如 char s[200] = "这是一个中文句子"; puts(s); 这样是可以的.

大庆市15025172469: 怎么在c语言里输入中文啊?就是运行程序后输入中文. -
赧影奥维: #include <stdio.h> #include <stdlib.h> int main() {char *str;gets(str);puts(str);return 0; } 在运行程序后输入中文,关键点是在控制台中切换到中文,如下图所示 这样就可以输入中文了,检查你切换到中文的快捷键!

大庆市15025172469: C语言赋值一串汉字,并输出其中一个字怎么做 -
赧影奥维: 用指针实现,比如 #include <stdio.h> void main() {char sz[20] = "一二三四五"; //输出 "三"char * p;p = (char *)sz + 4; //一个汉字占两个字节,指针指向数组的第5个字节;p[2] = '\0'; //将指针指向的第三个字节赋值为结束符,代表结束;printf("%s\n", p); }

大庆市15025172469: C语言里如何给结构体成员(一个数组)赋汉字值? -
赧影奥维: 给你举个例子 // 结构体1.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "string.h" #include "stdlib.h" //定义全局常量 #define m 3 //结构体 结构体实质是可以构建世界上的任意一种类型. //结构体标志...

大庆市15025172469: 在C语言中如何使输入的数值赋值到未知数上 -
赧影奥维: 首先从你的表述上看感觉你基础很薄弱, 问题是,c语言中数据在输入的时候都要先定义一个变量用来存储用户输入的数据比如,我要输入一个数字,那么我就要定义一个变量比如这样:int a; 然后,我才能调用输入函数scanf(“%d”,&a);来从键盘输入数字,而输入的数字就存放在a里面了. 所以,如果需要将输入的这个数再传给别的变量,只需要调用赋值语句即可比如b =a就可以把刚才输入放在a里面的值再次传给b; 注意,c语言中存放数据需要用到变量,而变量需要先声明才能使用

大庆市15025172469: C语言编程,变量赋值 -
赧影奥维: #include int main() {FILE* file;char varn[30][30];double var[30];char ch;int i=0,j=0;file=fopen("123.txt","r"); //当前工作目录while((ch=fgetc(file))!=10){ungetc(ch,file);fscanf(file,"%s",varn[i++]);}while(fscanf(file,"%lf",&var[j++])!...

大庆市15025172469: 在c语言中怎样随机给变量赋值? -
赧影奥维: 编程时有时需要随机输入一些数,这是调用随机函数可以完成此相命令. # include “stdio.h” # include “stdlib.h” # include “time.h” /*需引用的头文件*/ srand((unsigned)time(NULL)); /*随机种子*/ n=rand()%(Y-X+1)+X; /*n为X~Y之间的...

大庆市15025172469: C语言如何把汉字区位码赋值给变量 -
赧影奥维: c语言输入汉字就可以了.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网