求助,如何根据索引文件中的地址找到另外一个文件中的数据
程序里有两个文件,一个索引文件(.inx),一个存入网络上接收到的字符串文件(.log)。
索引文件中存入的是一个结构体
typedef struct
{
unsigned long ip; //发送端IP
unsigned short port; //发送端端口
double time; //接收端时间
unsigned long pointer; //偏移地址
}Inx;
现在我不知道这个偏移地址怎么放入数据,而且怎么根据偏移地址得到接收到的字符串。
[解决办法]
unsigned long是0~4394967295的正整数,直接赋值正整数就可以了
所谓的偏移地址,是指这个数据段相对于段首或上一段的字节数,你所给的信息并不完整,根据个人的揣测,.log文件存储的应该是不同时间和不同客户端发送来的数据,新数据是直接追加到文件尾部的
.inx文件中应该不止一个结构,而应该也是将结构序列化后不断追加到其尾部的
基于上面的假设,那么unsigned long pointer存储的就是:
1、写入当前数据之前.log文件的大小
假设已经存入了600个数据,那么取第100个,第100个的unsigned long pointer就数据的开始位置,数据长度就是:第101个结构的unsigned long pointer所记录的数值 -(减) 第100个的unsigned long pointer的数值
2、写完数据之后.log文件的大小
// 和上面的差不多
3、当前数据的长度等
,.log
[解决办法]
若每次添加的紀錄長度不一的話...建議樓主在結構體加一個長度項目~
因為很久沒有搞檔案操作了~ 大概會用到 append() . fseek()