关于c (100分)

  • 主题发起人 主题发起人 D影子D
  • 开始时间 开始时间
D

D影子D

Unregistered / Unconfirmed
GUEST, unregistred user!
谁知道怎样用c把链表保存为一个dbf文件?
我的代码得到的文件是乱码!why?
void save()
{
FILE *fp;
list *p;
p=⊤
if ((fp=fopen("wc.txt","w"))==NULL)
{
printf("文件还没有建立!/n");
return;
}

if (fwrite(p,sizeof(struct list),1,fp)!=1)//链表已经键好的
printf("写错误!/n");

fclose(fp);
}
 
链表里含有指针,所以你不能这样保存. 你必须遍历链表主项内容保存
 
比如说结构体
struct list
{
int num,score;
list *next;
}top;
我怎么写?如果只写一项就不用遍历链表了吗?举个例子好吗?
 
链表的存放不一定是连续的,
其实写入文件后, 指针 next 没用了,
还是应该遍历,读取应重新建立链表。
 
对链表中的结构体进行遍历保存呀
 
将链表中的各项数据安文本方式存储,在读时再重新生成吧
 
怎么做?
struct list
{
int num,score;
list *next;
}top;
.............
............
void save()
{
FILE *fp;
list *p;
p=⊤
if ((fp=fopen("wc.txt","w"))==NULL)
{
printf("文件还没有建立!/n");
return;
}
while(p!=NULL)
{
if (fwrite(p,sizeof(struct list),1,fp)!=1)//链表已经键好的
printf("写错误!/n");
p=p->next;}

fclose(fp);
}
main()
{
save();
}
这样行吗?不行怎么改?
 
写下面的就可以了,不要把指针也写进去:
p->num
p->score
 
还有就是如果你要存为文本文件最好用fprintf
 
接受答案了.
 
后退
顶部