怎么给结构体变量的成员是字符数组初始化?


struct s{int fangjianhao;char xingming[80];}a[80];
我给a[1].xingming[80]赋值
a[1].xingming[80]={"Li"};
出错
D:\32236326\C++\GOODS\Cpp4.cpp(44) : error C2059: syntax error : '{'D:\32236326\C++\GOODS\Cpp4.cpp(44) : error C2143: syntax error : missing ';' before '{'D:\32236326\C++\GOODS\Cpp4.cpp(44) : error C2143: syntax error : missing ';' before '}'D:\32236326\C++\GOODS\Cpp4.cpp(235) : warning C4508: 'main' : function should return a value; 'void' return type assumed

结构体初始化可以在定义的时候,显式初始化,其格式为:

struct type var ={初始化参数列表}

其中初始化参数列表,按照结构体定义的顺序,依次填入对应的值,以逗号隔开,对于空白的部分,系统自动赋值为0。

如

struct test

{

    int a;

    char c;

    float f;

};

定义并初始化可以写作

struct test var = {1, 'c', 1.23};

对于有字符数组成员的,其初始化格式与字符数组变量初始化类似,可以写作如下两种方式:

struct test 

{

    char arr[10];

};

    struct test var = {"test"};

    以字符串方式初始化。

    struct test var = {{'a','b','c'}};

    以数组形式初始化。


温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-29
3种方法:
1、定义时初始化:
2、strcpy初始化
3、输入初始化
struct s
{
int fangjianhao;
char xingming[80];
}a[80]={{0},{0,"wangli"}};///定义时初始化:

void main()
{
strcpy(a[1].xingming,"wangli");//strcpy初始化
scanf("%s",a[1].xingming);//输入初始化
}
第2个回答  推荐于2018-03-01
字符串不能直接赋值。。。
strcpy(a[1].xinming,"Li");
这样就可以了本回答被提问者和网友采纳
第3个回答  2012-06-29
strcpy
相似回答