尝试为 c 中的现有 char 数组分配新的字符串值时,出现以下错误:
assignment to expression with array type
employees[id].FirstMiddleName = NewFirstMiddleName;
^
我认为两个变量都是相同大小的数组,所以我不明白错误指的是什么或如何修复它。
struct employee {
char LastName[30];
char FirstMiddleName[35];
float Salary;
int YearHired;
};
int modify(int id) {
char NewLastName[30];
char NewFirstMiddleName[35];
float NewSalary;
int NewYearHired;
printf("Enter new first (and middle) name(s): n");
gets(NewFirstMiddleName);
employees[id].FirstMiddleName = NewFirstMiddleName;
printf("Enter new last name: n");
gets(NewLastName);
employees[id].LastName = NewLastName;
....
}
int main() {
struct employee *ptr, person;
ptr = &person;
ptr->LastName[0] = ' ';
ptr->FirstMiddleName[0] = ' ';
ptr->Salary = -1;
ptr->YearHired = -1;
for(int i = 0; i < 20; i++) {
employees[i] = person;
//printf("%in", i);
}
....
}
employees[id].FirstMiddleName
是数组类型,无法使用=
赋值运算符应具有可修改的左操作数。可修改的左值是没有数组类型的左值
在这种情况下,您需要使用strcpy
strcpy(employees[id].FirstMiddleName, NewFirstMiddleName);