gpt4 book ai didi

将结构指针转换为 char* 并复制

转载 作者:太空狗 更新时间:2023-10-29 15:52:46 25 4
gpt4 key购买 nike

我有以下代码

struct Info { int age; char name[5]; }
char buffer[20];
Info i;
i.age = 10;
sprintf(i.name, "Case");
strncpy(buffer+5, (char*)&i, sizeof(Info));

现在我要恢复记录

Info j;
strncpy((char*)&j, buffer+5, sizeof(Info));
printf("%d %s", j.age, j.name);

然而,这会为名称打印空字符串。我不确定我做错了什么。

最佳答案

你的复制机制有两个问题:

  1. 您假设 sizeof(Info) 是 5。绝对不是这样。
  2. 您正在使用用于字符串的strncpyInfo 不是字符串,所以需要使用memcpy

以下将起作用:

char buffer[sizeof(i)];
memcpy(buffer, &i, sizeof(i));

...

memcpy(&j, buffer, sizeof(j));

还有一个问题; name[5] 不够大,无法容纳 “Casey”,因为一旦您考虑了 null 终止符,它就是 6 个字符。

关于将结构指针转换为 char* 并复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14755025/

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