如何编辑字符串(在C结构中)

Ari*_*Ari 1 c string struct

我在C中模拟继承,但我对语言并不熟悉.下面是一些代码.Visual Studio有一条错误消息emp.name=n,上面写着:

表达式必须是可修改的左值.

如何更改它以便可以修改?

typedef struct {    
        char name[20]; 
        double salary;  
        } Employee;

Employee newEmployee(char n[], double s)
{
    Employee emp;
    emp.name=n;
    emp.salary=s;
    return emp;
}
Run Code Online (Sandbox Code Playgroud)

Tim*_*per 5

您需要将数据复制nEmployee.name:

strncpy(emp.name, n, 20);
Run Code Online (Sandbox Code Playgroud)

但是,如果n不是以NULL结尾,则会遇到问题.使用以下代码来保证emp.name将以NULL结尾的字符串:

strncpy(emp.name, n, 19);
emp.name[19] = '\0';
Run Code Online (Sandbox Code Playgroud)

  • 哎哟,请把它变成`strncpy`! (2认同)