其他分享
首页 > 其他分享> > 将包含字符串的结构写入二进制文件

将包含字符串的结构写入二进制文件

作者:互联网

我有一个二进制文件,我在其中记录写入其他文件的偏移量以及在该偏移量处写入的数据.现在我将每个日志记录的结​​构定义为

struct log_record{
                    int offset;
                    char *data;
               }
struct log_record t;

当我将记录写入文件时,我有足够的数据写入文件,因此在分配之前我将空间分配为

t.data = (char*)malloc(sizeof(char)*strlen(buff));/*buf holds the data to be written*/

现在我有我写入文件的记录的长度…但问题是在阅读时.如何为我读取记录的结构和fread中的空间分配空间应该是记录的大小.有点困惑.
 会感激不尽的帮助

解决方法:

你需要写字符串的长度,因为字符串的长度是可变的.

请注意,strlen()不返回包括终止NULL的大小.

编辑编辑2(感谢mu太短)编辑3(感谢mu太短)

我就是这样做的:

t.data = (char*) malloc(sizeof(char) * strlen(buff) + 1);
strcpy(t.data, buff);

// ...
int data_size = strlen(t.data) + 1;
fwrite(&t.offset,  1, sizeof(t.offset),   file);
fwrite(&data_size, 1, sizeof(data_size),  file);
fwrite(t.data,     1, strlen(t.data) + 1, file);

标签:c-3,linux,binaryfiles
来源: https://codeday.me/bug/20190826/1734960.html