- 论坛徽章:
- 0
|
typedef struct nodec
{
char *buf;
long size;
struct nodec *next;
struct nodec *prev;
}nodec,*pnodec;
typedef struct nodeb
{
struct nodec *pc[100];
char buf[100];
struct nodeb *next;
struct nodeb *prev;
}nodeb,*pnodeb;
typedef struct nodea
{
struct nodeb *pb[100];
struct nodec *pc;
char *buf;
long size;
}nodea,*pnodea;
今有pnodea mynode;
该如何将此数据写入文件啊?
要写入的包括
mynode->pb;//一个指针数组
mynode->pc;//一个双向链表
mynode->buf;//一个字符串
mynode->size;//数
将链表写入文件不复杂,复杂的是链表中的节点中还嵌套各样的链表。
我想写一个通用的文件接口,可以写入任何类型的数据文件
这个问题的缘由是
typedef struct tpinfo
{
char *type;
int flag;
int len;
void *(*patch)(void*pdata);
void *(*depatch)(void*pdata);
}tpinfo,*ptpinfo;
#define make(type,flag,len,patch,depatch)\
_make(#type,flag,len,patch,depatch)
void *_make(char*type,int flag,int len,void *patch,void*depatch)
{
ptpinfo mytype=new(mytype);
mytype->flag=flag;
mytype->len=len;
mytype->patch=(void*(*)(void*))patch;
mytype->depatch=(void*(*)(void*))depatch;
mytype->type=malloc(len+1);
strcpy(mytype->type,type);
return (void*)mytype;
}
void write(void *pdata,void *reserved);
void *nodea_patch(void *pdata); //将pdata打包
void *nodea_depatch(void *pdata);//将pdata解包
struct nodea *mydata;
write(mydata,make(nodea,true,sizeof(nodea),nodea_patch,nodea_depatch));
我想通过这种方式实现write的通用性,不过如何写一个通用的patch函数呢?
请大家注意了,我想实现的是write的通用性,而不是简单的fwrite
[ 本帖最后由 jmy2446267 于 2008-10-9 16:33 编辑 ] |
|