1樓:匿名使用者
你的檔案時以二進位制開啟的,用文字編輯器看亂碼是正常的。
但是程式裡有幾個問題:
1. typedef struct book //typedef是多餘的
if(fp==null)
開啟檔案出錯後,沒有退出函式,真的出現開啟檔案出錯,程式就有問題了。
3. for(p=head->pnext;p;p=p->pnext) 一開始就把指標指向第二個節點了,第一個節點資訊丟失了。
修改為for(p=head;p->pnext;p=p->pnext)4. fwrite(p,sizeof(book),1,fp); 把pnext指標也存了,這個資料沒有任何意義。
關於c語言中,連結串列資料的檔案儲存和提取。
c語言單向連結串列中如何往檔案裡存入資料和讀取資料?
2樓:匿名使用者
只需要將來檔案標示為二進位制源即可。
struct student stu[256];
//將stu賦值...
file * fd=fopen("c:\\test.bin","wb");//開啟
int i;
for(i=0;i<256;i++)//寫入
//讀取第k個結構體
struct student rstu;
file *fd=fopen("c:\\test.bin","rb");//開啟
fseek(fd,k*sizeof(struct student),seek_set);//定位
讀取
c語言如何從檔案讀入,並存放在連結串列中 20
3樓:阿豪呦
//舉個單連結串列的例子,首先定義連結串列成員的結構體
struct filetext;
//讀取檔案,並插入進連結串列的函式,filename為要讀取的檔名,head為連結串列的頭節點,函式返回插入新節點後連結串列的頭節點
struct filetext * readfile(char * filename,struct filetext * head)
//然後開始讀取檔案,放到new的buf中
if(fread(new->buf,bufsize,1,fp)<1)
fclose(fp);
//檔案讀取完後,進行連結串列操作
if(!head)//如果傳進來的head是個空指標,那麼新指標就作為頭節點返回
while(p->next) p = p->next;//把p移動到最後一個節點
p->next = new;//p的下一個節點為new
new->next = null;//new的下一個節點為空
return head;
//這樣這個函式就完成了,你可以寫個主函式,定義一個頭節點,試下。
4樓:定你個
//很簡單,給你個單連結串列的例子,首先定義連結串列成員的結構體
struct filetext;
//讀取檔案,並插入進連結串列的函式,filename為要讀取的檔名,head為連結串列的頭節點,函式返回插入新節點後連結串列的頭節點
struct filetext * readfile(char * filename,struct filetext * head)
//然後開始讀取檔案,放到new的buf中
if(fread(new->buf,bufsize,1,fp)<1)
fclose(fp);
//檔案讀取完後,進行連結串列操作
if(!head)//如果傳進來的head是個空指標,那麼新指標就作為頭節點返回
while(p->next) p = p->next;//把p移動到最後一個節點
p->next = new;//p的下一個節點為new
new->next = null;//new的下一個節點為空
return head;
}//這樣這個函式就完成了,你可以寫個主函式,定義一個頭節點,試下
c語言,連結串列,將資料儲存到檔案,再從檔案讀取,幫忙看看。
5樓:匿名使用者
struct txl *fromfile(struct txl *head)
fclose(fp);
p->next=null;
return head;
}1、對於結構體資料的存取可以考慮用"b"方式開啟,並用fwrite()和fread()進行操作。
2、這個**大多情況下可以正常執行,但當刪除的資料是第一個結點時會出問題(致命問題),建議改為有頭結點的連結串列,為連結串列的刪除、排序操作創造必要的條件。
6樓:鍋安東尼
fscanf(fp,"%d\t",j);這一行,的j沒有取地址?
C語言輸出問題,C語言 建立連結串列與輸出連結串列的問題
我在你 的基礎上,稍微改了點,你看下,是否就是輸出你想要的 include main 程式中少了幾個變數的宣告。輸出的不是從0到1000,這是因為你把step的值定為了50的緣故啊。下面是把step改為了10的執行結果 include main 標準c語言庫函式fprintf printf格式字串的...
c語言釋放連結串列記憶體的問題,C語言釋放連結串列記憶體的問題
把連結串列建立的函式貼出來。否則難以判斷。還有lnode 和linklist的型別定義貼出來再請求一次,把lnode 和linklist的型別定義貼出來!從 l next 的用法,我推測linklist是一個結構體指標型別,作用是指向連結串列頭。可是你在malloc的時候,用的sizeof link...
C語言中如何將連結串列儲存為檔案,C語言中如何將一個連結串列儲存為檔案?
第一步 建立檔案 比如說 file fp fopen 第二步 寫一個迴圈,把連結串列的節點一個一個寫進檔案裡。第三部 記得關閉檔案 1 基本思想是通過遍歷的方式儲存 資料,不儲存指標域 還原的時候,根據儲存的方式讀取資料,再建連結串列。2 比如單連結串列,一次遍歷可以得到一個一維陣列,儲存該陣列即可...