我试图在c中使用结构体分配空给一些字符串:
void initializer(table* s)
{
for(int i = 0 ;i<N;i++)
{
s[i].name= "Empty";
}
}
和main函数
table s[N];
initializer(s);
这是我的结构体:
struct table {
char name[10];
int marks;
} ;
typedef struct table table;
我仍然需要声明标记为-1,但我想这应该不能解决这个错误;
我做错了什么?
不能将字符串赋值给字符数组。使用strlcpy
.
对象必须是可修改的l值,才能用=
运算符修改。从6.3.2.1p1:
…可修改左值是指不具有数组类型的左值。
不具有不完全类型,不具有const限定类型,如果是结构体或联合,则不具有const限定类型的任何成员(递归地包括所有包含的聚合或联合的任何成员或元素)。
name
成员的类型是char[10]
,所以不能用=
操作符赋值。使用专用函数strcpy
:
strcpy(s[i].name, "Empty");