最近在工作中遇到需要将程序中的数据存到文件中,等下次开机可以读出来,我想到最好是可以结构化的存储,最好可以支持键值查询和匹配。本来想用xml实现这个功能。可是我用的交叉编译工具不支持xml解析器的交叉编译。于是我就只好自己利用周末的时间研究了一波。
现在在以经实现了基本的存储和读取功能,主要用的是文件流相关的操作函数实现的,像
fopen
fprintf
fwrite
flseek
fscanf
fread
fclose
我的想法是之间利用fwrite存结构体的方式,在结构体之间利用'$'符和‘>’符分割开方便监测,当然你存储的结构体元素不能包含指针,因为指针存到文件中是没有意义的。我的实现中数据结构体中必须包含名为name的字符数组,这有利于后期键值匹配的实现。
废话少说,下面是我的实现:
fwsStruct.c#include
#include
#include "fwsStruct.h"
Head *creat_head(void)
{
Head *head = (Head *)malloc(sizeof(Head));
head->next = NULL;
return head;
}
Node *creat_node(void)
{
return (Node *)malloc(sizeof(Node));
}
void list_append(Head *head,Node *node)
{