请教:关于结构体写入文件的问题

gao_steven 2013-04-19 09:06:43
如何编写一个函数,使得传入任意大小,结构(可控范围内)的结构体都能实现将其写入文件并读出的功能?

关键是任意结构体,若只是指定的一个结构体应该就好实现很多!

另:有没有一些用C写的比较经典的编写并解析配置文件的例子呢?求教!
...全文
133 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gao_steven 2013-04-23
  • 打赏
  • 举报
回复
多谢!xml确实比较方便、就是不怎么会!
AnYidan 2013-04-19
  • 打赏
  • 举报
回复
fread(), fwrite() 只能工作在相同的文件系统和相同的对齐配置下
shen_wei 2013-04-19
  • 打赏
  • 举报
回复
或者你可以 写成 ini文件。。
palm008 2013-04-19
  • 打赏
  • 举报
回复
结构体读写建议打开文件时候是用 wb 标记
starytx 2013-04-19
  • 打赏
  • 举报
回复
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;
}
chuachua66 2013-04-19
  • 打赏
  • 举报
回复
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就行。
赵4老师 2013-04-19
  • 打赏
  • 举报
回复
XML

69,372

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧