请教:关于结构体写入文件的问题
如何编写一个函数,使得传入任意大小,结构(可控范围内)的结构体都能实现将其写入文件并读出的功能?
关键是任意结构体,若只是指定的一个结构体应该就好实现很多!
另:有没有一些用C写的比较经典的编写并解析配置文件的例子呢?求教! Structure
[解决办法]
void write( void* pStruct, int nlen )
{
fl = fopen(XXX, wb);
for( int nID=0; nID < nLen; ++nID )
fwrite( (char)pStruct[nID], 1,1,fl);
fclose(fl);
}
void Read( void*& pStruct, int nLen )
{
fl = fopen(XXX,rb);
pbuf = malloc(nLen);
fread( pbuf, 1, nLen, fl);
fclose(fl);
pStruct = pbuf;
}
2、配置文件要看你写成什么格式,写成xml,网上搜个cmarkup就行。
[解决办法]
struct DATA
{
int a;
char b;
double c;
char d[10];
};
int main()
{
// 先写一个
FILE *pf = fopen("test.dat" ,"w");
if (pf)
{
DATA data;
data.a = 10;
data.b = 'X';
data.c = 123.45;
strcpy(data.d ,"hello");
fwrite(&data ,sizeof(data) ,1 ,pf);
fclose(pf);
}
// 读出来看看
pf = fopen("test.dat" ,"r");
if (pf)
{
DATA dataTest;
fread(&dataTest ,sizeof(dataTest) ,1 ,pf);
printf("%d %c %f %s\n" ,dataTest.a,dataTest.b,dataTest.c,dataTest.d);
fclose(pf);
}
return 0;
}