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)
严格来说这个
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尽管这样做效率不高.
否则,如果不是初始化,而是结构的数据成员的分配,那么确实你必须至少使用strcpy或strncpy.