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

标签 c struct initialization strcpy

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

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;
}

最佳答案

严格来说

strcpy(x.name,"sam");

不是初始化。

如果要说初始化那么可以用下面的方式来做

employee x = { .name = "sam", .age = 25 };

employee x = { .name = { "sam" }, .age = 25 };

这相当于下面的初始化

employee x = { 0, "sam", 25 };

employee x = { 0, { "sam" }, 25 };

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

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

关于c - 如何在不使用 strcpy 函数的情况下初始化结构中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45777154/

相关文章:

c++ - 为什么会发生此链接器警告和段错误?

c++ - "static functions with block scope are illegal"错误取决于初始化样式?

c++ - 在 C++ 中通过重载构造函数初始化未知类型的变量

c++ - 是否允许位域的聚合初始化?

c - 如何将 c 中的 char[] 复制到我的结构中

c - 函数调用,将其 void * 参数转换为任何其他类型

c - 来自 PSQL 触发器的提示

objective-c - 使用运行循环覆盖 main.m 但仍然进入 NSApplicationMain 调用?

ios - 当用作函数中的参数时,结构值类型前面需要关键字 var

c - Printf 无法正确打印字符串