问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言,结构体中的数组怎么赋值,?

发布网友 发布时间:2022-04-23 12:51

我来回答

4个回答

热心网友 时间:2023-05-22 15:32

(1)用字符常量逐个初始化数组。例如:

char a[8]={'i','l','o','v','e','y','o','u'};

把8个字符依次分别赋给c[0]~c[7]这8个元素。

如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。如果花括号中提供的初值个数(即字符个数)大于数组长度,则出现语法错误。

如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即'\0')。

如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。

例如:char c[]={‘c’,‘’,‘p’,‘r’,‘o','g','r','a','m'};

这时c数组的长度自动定为9。也可以定义和初始化一个二维字符数组,例如:

char diamond[5][5]={{'','','#'},{'','#','','#'},{'#','','','','#'},

{'','#','','#'},{'','','#'}};用它代表一个菱形的平面图形。

(2)字符串常量初始化数组。例如:

char c[]={‘c’,‘’,‘p’,‘r’,‘o','g','r','a','m'};

可写为:char c[]={"C program"};

或去掉{}写为:char c[]="C program";

注意:此时数组c的长度不是9,而是10。因为字符串常量的最后由系统加上一个'\0'。上面的初始化与下面的初始化等价。

char c[]={‘c’,‘’,‘p’,‘r’,‘o','g','r','a','m','\0'};

扩展资料:

其定义的一般形式是:char数组名[数据长度]

例如:

char c[10];

c[0]='I';c[1]='';c[2]='l';c[3]='o';c[4]='v';c[5]='e';c[6]='';c[7]='y';c[8]='o';c[9]='u';

以上定义了c为字符数组,包含10个元素。

由于字符型数据是以整数形式(ASCII代码)存放的,因此也可以用整型数组来存放字符数据,例如:

int c[10];

但这时每个数组元素占2个字节的内存单元,浪费存储空间。

字符数组也可以是二维或*数组,例如:

char c[5][10];

即为二维字符数组。

初始化

字符数组的初始化与数值型数组初始化没有本质区别。但它除了可以逐个给数组元素赋予字符外,也可以直接用字符串对其初始化。

输入输出

字符数组的输入

(1)用getchar()或scanf()的'%c'格式符对数组进行字符赋值。例如,对于数组a[10]:用getchar()赋值:

for(i=0;i<10;i++)

a<i>=getchar();

用scanf()赋值:

for(i=0;i<10;i++)

scanf("%c",&a<i>);

(2)用scanf()的'%s'格式对数组赋值。还是对于数组a[10]:

scanf("%s",a);

scanf("%s“,&a[0]);

输入”C program“并回车时,a数组会自动包含一个以”\0“结尾的字符串”C program“。

字符数组的输出

(1)用putchar()或printf()的‘%c’格式符对数组进行字符赋值。例如,对于数组a[10]:用putchar()赋值:

for(i=0;i<10;i++)

a<i>=putchar();

用printf()赋值:

for(i=0;i<10;i++)

printf("%c",a<i>);

输出结果为:

c program

(2)用printf()的'%s'格式对数组赋值。还是对于数组a[10];

printf("%s",a);

输出结果为:

c program

参考资料:

百度百科——字符数组

热心网友 时间:2023-05-22 15:33

你程序中的那种赋值方式只能在数组定义的时候赋值,定义完成后,就要一个一个的赋值。比如:s.a[0]
=
1;s.a[1]
=
2;如果赋值有一定规律的话,可以用for循环;如果赋的值一样的话,可以用
memset(s.a,0,sizeof(s.a));,memset一般用于数组初始化和清零。

热心网友 时间:2023-05-22 15:33

对于已经定义好了的数组,肯定不能用这样赋值啦,给结构体赋值其实就跟其他的变量赋值一样,难道你可以
int
a[3];
a={0,1,2};
这个给一个int数组赋值吗,不行啊。
正确的做法就是像其他变量一样一个一个赋值,当然也可在结构体初始化时赋值

热心网友 时间:2023-05-22 15:34

如果没记错的话只能是数组初始定义的时候才可以这样赋值。
只能一个一个赋值,s.a[0]=1;
这样是合法的
想给数组赋值的话用循环吧
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
新房装修后能马上入住吗 房子刚装修完多久才可以入住 房子刚装修完就入住身体会怎么样 人民币"升值""贬值"的确切含义是什么? 人民币升值的利弊是什么?贬值又会有什么影响? 西电东输西电东输谱新篇 ...想去的地方有武夷山、厦门、鼓浪屿,求路线~ 贵州电费为什么便宜 武夷山回到厦门的火车站跟我在广州搭火车到厦门的火车站是同一个吗 纵使有千万个不舍也是时候该离开了!心不在了要人何用,再见了亲爱的!翻 ... C语言结构体赋值 C语言结构体赋值的问题? C语言 结构体的赋值 C语言中怎么给一个结构体用scanf进行赋值? 电脑桌面的工具栏跑到桌面顶端了,我怎么把他弄下面去啊大神们帮帮忙 任务栏图标怎么样才能弄的最下面 怎么把工具栏移到下面来? 怎么将工具栏拉到最下面? 怎么把工具栏放到最下面? 怎么把桌面的工具栏调回到桌面最底下? 工具栏...怎么弄到下面?? 怎样在电脑上同时登陆两个 电脑怎么登录两个 饿了么点餐优惠吗? 请问现在哪些外卖平台比较好做?除了像美团饿了么这样的。 饿了么外卖接入阿里系app,不只入口那么简单 人民日报点名饿了么,平台对骑手的剥削有多严重? 饿了么怎么样好不好用 微扇外卖怎么抽佣,抽佣多少,不会和美团 饿了么那么高吧? 饿了么的红包会不会泄露微信息安全 C语言 如何在结构体中给嵌套的结构体赋值? C语言结构体赋值问题 c程序 为结构体赋值 快中考了,帮忙整理下初中三年语文 1.易读错字词的字音2.易写错的难写的字词 c语言中结构体赋值问题 含‘洪、宏、鸿有关的成语或优美的词语 结构体赋值是多少? C语言怎么给结构体里的结构体赋值? 高中语文字形练习题 C语言用字符串直接给结构体赋值方法 什么是光子祛斑? C语言结构体赋值,为什么D是错的? 光子祛斑几天恢复正常?光子祛斑的疗程是多少? 中考语文难写字(尽量全) 怎样快速光子祛斑? C语言结构体赋值的问题,刚输入第一个name就提示出错 激光祛斑和光子祛斑哪个更好 C语言关于结构体赋值的问题,在线等 2007年颍上中考成绩情况一栏表 光子嫩肤可以祛斑吗?