struct st {
char *p;
int len;
};
这是我需要写入二进制文件的结构,以及保存在中的字符串
char *p
我应该用字符数组数据编写一个二进制文件。写入二进制文件后。还应该能够从二进制文件中以相同的结构读取它。
我尝试使用 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 完成。
将其写入二进制文件是没有用的。一个文本文件就足够了。
但是,如果这是您的家庭作业(或类似作业),我建议您按以下步骤操作:
回读时:
读取整数长度;
分配这个长度的内存加一字节
将字符串读入该内存并添加终止 null.
使用此长度和指向已分配内存的指针填充您的结构。
在您的评论中,您不断重申您想要一步读和写。使用您当前的数据结构这是不可能的因为字符串总是在内存中的其他地方并且fwrite
只能写入连续的内存块。
但是,您会将数据结构更改为:
struct st{
char p[128];
int len;
};
然后你can一次写入和读取,因为现在该结构是一个连续的内存块。但现在字符串限制为 128 字节(或您指定的任何大小)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)