结构体赋值给数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结构体赋值给数组相关的知识,希望对你有一定的参考价值。

c语言只有在定义字符数组的时候才能用“=”来初始化变量,其它情况下是不能直接用“=”来为字符数组赋值的,要为字符数组赋值可以用string.h头文件中的strcpy函数来完成。
例如:
char
a[10]
=
"123";
/*正确,在定义的时候初始化*/
char
a[10];
a
=
"123";
/*错误,不能用“=”直接为字符数组赋值*/
strcpy(a,
"123");
/*正确,使用strcpy函数复制字符串*/
所以要对game[0][0].cpart赋值应该用strcpy(game[0][0].cpart,
"123");才对。注意要使用strcpy函数要用#include
包含string.h头文件。
参考技术A 对于已经定义好了的数组,肯定不能用这样赋值啦,给结构体赋值其实就跟其他的变量赋值一样,难道你可以
int
a[3];
a=0,1,2;
这个给一个int数组赋值吗,不行啊。
正确的做法就是像其他变量一样一个一个赋值,当然也可在结构体初始化时赋值

如何对结构体中的数组进行一次性全部赋值?谢谢,比如就是这个意思 b.a[]=,,,,;

1、在定义的时候初始化。
2.把这个数组再放到一个内部结构体中,这样就可以一次性赋值。例如:
struct
struct
int a[20];
aa;
int c;
b,d;

b.aa=d.aa//将d中的a数组复制到b中的a数组。
参考技术A 楼上的误导人啊,数组不可以这样赋值的
struct
int data;
int a[4];
c;//定义结构体C
c.a=1,2,3,4;追问

那这也不对啊,我试了,有错误,我是用的vc6.0 xp

追答

#include
#include
struct c //注意这里,以前写的也不对

int data;
int a[4];
;//定义结构体C

int main()

int i,b[4]=1,2,3,4;//可以这样初始化
int m[4];
// m[4]=1,2,3,4;/*这句错了,定义好的数组不能这样赋值了, 去掉可以运行*/
c test;
for(i=0;i<4;i++)
test.a[i]=i;
for(i=0;i<4;i++)
printf("%d",test.a[i]);
system("pause");
return 0;

//上面是我测试好的代码,哎,不好意思啦,结构体都没定义对,还有,数组赋值还要一个个来

追问

数组赋值不可以整体一次性定义吗?

追答

不行的,只有初始化的时候可以整体赋值
要是真的想整体赋值的话,你可以自己写个数组类
不过我感觉多余了哎
标准库什么的我不太懂,不好说
额,你可以去网上查查看的

追问

嗯,谢谢啊,上次我们老师问了这个问题,然后就不知道,就问了……那我查出来了,给你发过去,

追答

好啊,嘿嘿

追问

没有找到,可能不行吧。下次我问老师咋干的。

追答

好的啊,呵呵

本回答被提问者和网友采纳

以上是关于结构体赋值给数组的主要内容,如果未能解决你的问题,请参考以下文章

C语言怎么给结构体里的结构体赋值?

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

如何给结构体里的数组复制啊???

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

C语言关于结构体变量为动态数组赋值问题

c语言结构体中的一个char数组怎么赋值?