将新字符串值分配给 char 数组时出错



尝试为 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);

最新更新