gpt4 book ai didi

c - 使用 fwrite 将结构体指针写入文件

转载 作者:行者123 更新时间:2023-11-30 16:02:36 24 4
gpt4 key购买 nike

我正在尝试将结构指针写入文件。我想要的是将结构指针写入字符缓冲区,然后从缓冲区检索指针,最后将整个结构写入文件。

我没有编写整个结构,而是在文件中获取了垃圾数据。

我是否在代码中遗漏了某些内容或犯了一些错误。

完整粘贴我的测试代码。

#include <stdio.h>
# include<stdlib.h>
#include <string.h>
typedef struct dummy_s {

int a;
} dummy_t;

void main(int argc, char* argv)
{


char *s1;
s1 = malloc(sizeof(dummy_t)*1000);
dummy_t * tmp1;
tmp1 = (dummy_t *)s1;
tmp1 -> a = 100;
FILE *f;
f = fopen("dummyfile.txt","w");
dummy_t * tmp = NULL;
tmp = malloc(sizeof(dummy_t));
memcpy(tmp, s1, sizeof(dummy_t));
fwrite(tmp,sizeof(struct dummy_s),1,f);
fclose(f);
}

[已编辑编译错误 - 抱歉]干杯!纳仁

最佳答案

抱歉,我会有点无礼。如果您发布代码片段,请确保它可以正确编译。你的代码使用了一个变量“d”,它没有定义,它需要“sizeof dummy”(我在这里没有看到一个虚拟的,至少在代码中没有),并且它缺少一堆#include: s。

修复编译错误(使用 tmp1 而不是 d)后,它似乎可以正常工作。请注意,您生成的“文本文件”包含结构的二进制表示形式,而不是文本表示形式。 (假设是 32 位小端机器,您将得到一个值为 100 的字节,后跟四个值为 0 的字节)。

另外,我认为不需要最后一个 malloc 和 memcpy,fwrite 应该能够直接写出原始数组的内容。

关于c - 使用 fwrite 将结构体指针写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5117902/

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