❶ 關於C語言中,鏈表數據的文件儲存和提取。
當把鏈表已經確定的時候,就可以依次存入文件。
和平時鏈表的遍歷一樣,每讀取一個節點內容就進行一次存入操作。
不過要注意幾個部分的檢查:
內存空間是否分配成功
是否成功存入到文件中
在工作完成之後,是否將以後不會用到的變數清空和刪除。
按照問題要求的代碼如下:
Consumer*read_list()
{
FILE*fp;
if((fp=fopen("CONSUMER.dat","rb"))==NULL)
{
printf("無法讀取CONSUMER.dat ");
returnNULL;
}
intsign;
Consumer*s,*p,*head;
head=(Consumer*)malloc(SIZE_C);
if(head==NULL)
{
printf("讀取失敗!內存空間申請不足! ");
returnNULL;
}
fseek(fp,0,SEEK_END);
if(ftell(fp)==0)
{
returnNULL;
}
p=head;
p->next=NULL;
while(feof(fp))
{
s=(Consumer*)malloc(SIZE_C);
//fread(s,SIZE_C,1,fp);
fread(s,sizeof(char),SIZE_C,fp);
p->next=s;
p=s;
p->next=NULL;
}
fclose(fp);
returnhead;
}//讀取文件到鏈表
intsave_consumer(Consumer*p)
{
FILE*fp;
Consumer*head;
head=p;//p為已經構建好的鏈表
//if((fp=fopen("CONSUMER.dat","ab+"))==NULL)
if((fp=fopen("CONSUMER.dat","wb"))==NULL)
{
printf("無法打開CONSUMER.dat! ");
return-1;
}
while(p!=NULL)
{
//fwrite(p,SIZE_C,1,fp);
fwrite(p,sizeof(char),SIZE_C,fp);
p=p->next;
}
fclose(fp);
return1;
}//儲存鏈表到文件
❷ C語言中如何將一個鏈表保存為文件
第一步:創建文件 比如說 file *fp=fopen(……);
第二步:寫一個循環,把鏈表的節點一個一個寫進文件里。
第三部:記得關閉文件- -