我尝试在c中用struct给一些字符串赋值empty,代码如下:
void initializer(table* s)
{
for(int i = 0 ;i<N;i++)
{
s[i].name= "Empty";
}
}
这在主要功能中
table s[N];
initializer(s);
这是我的结构体:
struct table {
char name[10];
int marks;
} ;
typedef struct table table;
我仍然必须声明标记为-1,但我想这不应该解决这个错误;
我做错了什么?
2条答案
按热度按时间nc1teljy1#
不能将字符串赋给char数组。请使用
strlcpy
。qoefvg9y2#
仅当对象是可修改的L值时,才可以使用
=
运算符修改对象。来自6.3.2.1p1:一个可修改的左值是一个左值,它不具有数组类型,不具有不完全类型,不具有常量限定类型,并且如果它是一个结构或联合体,则不具有任何具有常量限定类型的成员(递归地,包括所有包含的聚合或联合体的任何成员或元素).
name
成员的类型为char[10]
,因此无法使用=
运算符对其赋值。请使用专用函数strcpy
: