文件操作问题!!高手赐教!

heavenb 2003-10-19 03:59:41
void savetofile() //将带头节点链表转存入文件,GetLen()函数获取链表表长,
{FILE *flist;
if((flist=fopen("list.lst","w+"))==NULL) cout<<"FAILED!";
fwrite(Chead->next,sizeof(member),GetLen(),flist); //Chead为头指针
fclose(flist);
}

void openfromfile() //将文件中内容装入带头节点链表。
{FILE *flist;
head->next=NULL;
if((flist=fopen("list.lst","r+"))==NULL) cout<<"FAILED!";
fread(head,sizeof(member),GetLen(),flist);
fclose(flist);
}


为什么总是读写的不是我想要的数据,会读出一些乱码??
...全文
29 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yjf7888 2003-10-19
  • 打赏
  • 举报
回复
有意思,楼主挺幽默的。

补充:fopen时还是要指明用二进制方式,缺省是文本方式。
skywarship 2003-10-19
  • 打赏
  • 举报
回复
楼主不是开玩笑吧

最简单的解决办法是:
将链表以二进制的方式写入二进制数据文件中,读的时候分别计算链表中各个元素的字节数,按该格式把相应字节数的内容读入到链表元素变量中,并加以类型的转换

直接读就能建立链表的话,俺就不写程序了,那傻瓜都会写程序了
leyt 2003-10-19
  • 打赏
  • 举报
回复
同意Darkay_Lee() ,需要自己定义格式

要写的太多了
xiaonian_3654 2003-10-19
  • 打赏
  • 举报
回复
代码写的简洁写,格式很重要
xiaohyy 2003-10-19
  • 打赏
  • 举报
回复
是不是GetLen()的长度不对
Darkay_Lee 2003-10-19
  • 打赏
  • 举报
回复
拜托,你这是什么啊?想把链表的内存写入文件,然后读回来生成链表?你这么简单的fwrite/fread就搞定的话,这个世界岂不很美好,.^_^。

自己将链表的内容(!!是内容,不是身next指针之类的东西),还要定义一个格式,以便读进来的时候能够识别链表的各个部分。读的时候先读那些标准,分配内存,然后读内容。。。

东西还多着呢,.^_^。
lbaby 2003-10-19
  • 打赏
  • 举报
回复
看看是不是你的文件打开方式有问题

69,368

社区成员

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

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