Tc中文件链表的存储与读取.

zkjun 2000-06-09 08:34:00
小弟向大家请教一个问题,我在程序中写了一个简单的单链表的结构存储到文件dai.dat中,现在要将文件上的内容读出来,我该在程序//.......//怎么写。希望能得到你到帮助,先谢谢大家了。
#include <stdio.h>
#include <alloc.h>
struct node
{char n;
struct node *next;
}zkj;
struct node *head,*r,*s,*p,*q;

struct node *creat()
{
char ch;
head=p=(struct node *)malloc(sizeof(struct node));
r=head;
ch=getchar();
while (ch!='$')
{s=(struct node *)malloc(sizeof(struct node));
s->n=ch;
r->next=s;
r=s;
ch=getchar();
}
r->next=NULL;
return head;
}

void saves(p)
struct node *p;
{FILE *fp;
fp=fopen("c:dai.dat","wb+");
while(p!=NULL)
{fwrite(p,sizeof(struct node),1,fp);
p=p->next;
}
fclose(fp);
}

main()
{FILE *fp;
head=creat();
saves(head);
}
*******************************************************************
*******************************************************************
*******************************************************************
#include <stdio.h>
#include <alloc.h>
struct node
{char n;
struct node *next;
}zkj;
struct node *p,*q;

main()
{FILE *fp;
fp=fopen("c:dai.dat","rb+");
while (!feof(fp))
{fread(//........//,sizeof(struct node),1,fp);
//.....
.....
//
printf("%c",p->n);
}
fclose(fp);
printf("\n");
}
...全文
269 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zkjun 2000-08-24
  • 打赏
  • 举报
回复
随有用Tc写的链表存储与读写的程序请发给我,谢谢。
zkjun 2000-08-22
  • 打赏
  • 举报
回复
如何加分
freeX 2000-08-21
  • 打赏
  • 举报
回复
我有一个我自己写的,你要的话发email给我: go2free@netease.com
SCUM 2000-06-11
  • 打赏
  • 举报
回复
如果只为了显示 n, 可用halfdream的方法.
如果还要继续用该链表, 则仍应建立链表. 具体方法为:

1. 建首节点
2. 建新节点
3. 读入数据到新节点
4. 仍有数据则跳到 2
5. 处理终节点.

zkjun 2000-06-11
  • 打赏
  • 举报
回复
我确实是要不断的新添数据到链表中,并保存到文件,结构中还有另外一些成员变变,halfdream和scum兄能否给出具体的读写程序,我对用结构数组读写还比较清楚一些,但一用到指针链表则错误不断,在c语言和数据结构书中都没有找到.如有新添的数据,用fread读入的指针是否要从头指针head起不断的p->next,一真到链尾,再在链尾做插入处理,可不可以fread读入的直接是尾指针,尾指针我用head->front来表示.用结构数组表示时,如要修改stu[3]中的记录,用fread是只要读入&stud[3]的地址,还是必须要读入所有结构数组的地址.
对二位的答复与帮助再次表示感谢!
halfdream 2000-06-10
  • 打赏
  • 举报
回复
你读出数据的程序没有必要再创建一个链表。
因为写的时候是将链表顺序写入文件的。只需要挨个读出显示就行了。
不用做复杂了:
。。。
while(!feof(fp))
{
fread(&zkj,sizeof(struct node),1,fp);
printf("%d",zkj.n);
}
。。。
zkjun 2000-06-10
  • 打赏
  • 举报
回复
输出的字符还是多二个字符!不知为什么?
还有在建立链表的函数main()中head=p=(strut node *)malloc(struct node)改为
head=(struct node *)malloc(struct node)

69,370

社区成员

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

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