表达式必须是c中可修改的左值错误



我试图在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");

相关内容

  • 没有找到相关文章

最新更新