将包含字符串的结构写入二进制文件
作者:互联网
我有一个二进制文件,我在其中记录写入其他文件的偏移量以及在该偏移量处写入的数据.现在我将每个日志记录的结构定义为
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