如何在不使用strcpy函数的情况下初始化struct中的字符串?

Moh*_*afa 0 c struct initialization strcpy

是否有任何手动方式来初始化struct中的字符串?我曾经使用strcpy函数在struct中初始化字符串,例如:

typedef struct {
    int id;
    char name[20];
    int age;
} employee;


int main()
{
    employee x;
    x.age=25;

    strcpy(x.name,"sam");
    printf("employee age is %d \n",x.age);
    printf("employee name is %s",x.name);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Vla*_*cow 7

严格来说这个

strcpy(x.name,"sam");
Run Code Online (Sandbox Code Playgroud)

不是初始化.

如果要谈论初始化,那么你可以通过以下方式进行

employee x = { .name = "sam", .age = 25 };
Run Code Online (Sandbox Code Playgroud)

要么

employee x = { .name = { "sam" }, .age = 25 };
Run Code Online (Sandbox Code Playgroud)

这相当于以下初始化

employee x = { 0, "sam", 25 };
Run Code Online (Sandbox Code Playgroud)

要么

employee x = { 0, { "sam" }, 25 };
Run Code Online (Sandbox Code Playgroud)

或者您甚至可以使用该类型的复合文字employee来初始化对象,x尽管这样做效率不高.

否则,如果不是初始化,而是结构的数据成员的分配,那么确实你必须至少使用strcpystrncpy.