gpt4 book ai didi

使用 char 数组的 C 结构初始化

转载 作者:太空狗 更新时间:2023-10-29 16:43:14 24 4
gpt4 key购买 nike

我有一个 C 结构定义如下:

struct Guest {
int age;
char name[20];
};

当我创建一个 Guest 变量并使用以下代码初始化它时:

int guest_age = 30;
char guest_name[20] = "Mike";
struct Guest mike = {guest_age, guest_name};

我得到了关于第二个参数初始化的错误,它告诉我 guest_name 不能用于初始化成员变量 char name[20]

我可以这样做来初始化所有:

struct Guest mike = {guest_age, "Mike"};

但这不是我想要的。我想通过变量初始化所有字段。如何在 C 中执行此操作?

最佳答案

mike.name 是结构内部 20 字节的保留内存。 guest_name 是指向另一个内存位置的指针。通过尝试将 guest_name 分配给结构的成员,您尝试了一些不可能的事情。

如果必须将数据复制到结构中,则必须使用 memcpy 和 friend 。在这种情况下,您需要处理 \0 终止符。

memcpy(mike.name, guest_name, 20);
mike.name[19] = 0; // ensure termination

如果你有 \0 终止的字符串你也可以使用 strcpy,但是因为 name 的大小是 20,我会建议 strncpy

strncpy(mike.name, guest_name, 19);
mike.name[19] = 0; // ensure termination

关于使用 char 数组的 C 结构初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18966979/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com