【发布时间】:2019-10-02 15:15:47
【问题描述】:
struct st {
char *p;
int len;
};
这是我需要写入二进制文件的结构,以及保存在
中的字符串char *p
我应该用 char 数组数据编写一个二进制文件。写入二进制文件后。也应该能够从二进制文件中以相同的结构读取它。
我尝试使用 FSEEK_END 来获取二进制大小,并根据文件大小进行 fread,但它没有保存字符串。请建议。任何帮助/建议/指针将不胜感激。
提前致谢。
示例代码:
struct st {
char *p;
int len;
};
struct st varr;
varr.len = 100;
varr.p = new char[gen];
strcpy(varr.p, "Hello World");
FILE *p;
p=fopen("address","wb");
fwrite(&varr,sizeof(struct st),1,p);
fclose(p);
这会将指向二进制文件的指针写给我。但我想在这里写整个字符串,但重点是,它应该用一个 fwrite 完成。
【问题讨论】:
-
发布您尝试过的代码。不看代码就不可能知道问题所在。
-
@AndrewHenle 感谢您的回复。请检查我的代码
-
如果您想通过一次 fwrite 调用写入数据,您需要在内存中使用合适格式的数据构造一个缓冲区,如下面的答案所述。您需要写入字符串数据,而不是指针,并且您需要知道长度,在使用该结构的一次 fwrite 调用中这两者都不可能。
-
你应该为这段代码选择一种看起来像 C 的语言。
-
您正在将指针值写入文件。这没有意义。请先阅读 C 教科书中处理指针的章节。
标签: c++ c pointers structure fread