我在给结构体中的数组赋值的时候显示,左操作数不能作为左值。左值就是变量,那么也就是说结构体里面的数组是一个常量而不是变量。那么怎么解决这个问题?
typedef struct student
{
char name[20];
int age;
}
int main()
{
student s;
s.name = "gay"; // 错误代码
}
为什么会出现这种现象哪?先看这一种现象:
char[20] name;
name = "gay";
上面这段代码是不正确的,但是在定义的同时进行赋值就不会产生错误。
char[20] name = "gay";
上面这段代码是正确的代码。那么只要在定义字符数组的同时给字符数组赋初值就可以了。
具体用strcpy,或者是strcpy_s函数,后者是前者的安全方法。
用法如下:
strcpy(name, "gay");
strcpy_s(name, 20, "gay");
如果结构体中的数组类型为自定义类型,则使用memcpy函数
memcpy(name, "gay", 20);
当然,如果结构体中的数组类型为char,也可以把其改为string,这样就可以直接赋值了。