幫忙看一下**錯了,c語言讀shapefile檔案,儲存為連結串列的格式
1樓:續舟是順美
問題一:這個原來的dat檔案需要是已經衫喚在之前通過c語言形成的連結串列資料嗎?
答:不一定是連結串列資料,也可能是陣列什麼的。
問題二:是的話,如何提取出啟清來,提取出來後就已或旁凱經是連結串列?不是的話,應該怎麼構造?
答:提取出來的話就是,怎麼寫入就怎麼讀出,寫入方式和讀出方式一樣才行。至於是用連結串列儲存還是陣列這是隨便的!
問題三:最後形成的dat檔案是不是以連結串列形式儲存?
答案同上~!
c語言,關於儲存讀取連結串列到檔案,各位幫忙看看有什麼錯?
2樓:網友
c很久不用,file的函式忘得差不多了,從原理上說說但願能幫你首先上邊兩段程式是向檔案儲存和從讀取陣列資料,如果你學習了資料結構,或者至少對c有一定的熟悉,應該知道連結串列是由若干首尾相連的元素組成的,你不能像訪問陣列資料那樣隨機訪問連結串列上任意位置的資料,而必須按照連結串列方向遍歷至所需元素。
同樣的,在資料儲存和讀取時,對連結串列的處理也沒有辦法像處理陣列一樣一次性全部存入或讀出,而需要乙個乙個元素的遍歷。儲存時遍歷至乙個儲存乙個,再向下遍歷直至整個連結串列處理完畢;讀取時,需要預先定義好連結串列元素的結構,然後讀出乙個元素組裝乙個連結串列元素,再讀出下乙個,與前面的元素鏈結,直至讀出全部元素至檔案尾。
當然這是比較原始的方式,隨著你的連結串列元素複雜程度的增加可能還要引入分隔符,儲存和讀取的時候為了提高效能,可以考慮加入一段記憶體緩衝,這些在理解前述原理的前提下都是可以玩一玩的。
3樓:網友
不要把a定義為char陣列,把a定義為連結串列結構的指標st *a;
儲存時while((a=!=null)
讀取時while((fread(a,sizeof(a),1,fp))!=null)
4樓:匿名使用者
呵呵,我明白你的意思了,你是想寫乙個類似於通訊錄這樣的小軟體吧?
要指出的一點是,對於連結串列,並沒有直接儲存到檔案的,一般來說都是將連結串列中的資料按塊寫進檔案的,讀取的時候也是按塊讀取的。
c語言如何從檔案讀入,並存放在連結串列中
5樓:阿豪呦
//舉個單連結串列的例子,首先定義連結串列成員的結構體。
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語言中如何將乙個連結串列儲存為檔案?
6樓:網友
第一步:建立檔案 比如說 file *fp=fopen(……
第二步:寫乙個迴圈,把連結串列的節點乙個乙個寫進檔案裡。
第三部:記得關閉檔案- -
7樓:網友
1、基本思想是通過遍歷的方式儲存(資料,不儲存指標域),還原的時候,根據儲存的方式讀取資料,再建連結串列。
2、比如單連結串列,一次遍歷可以得到乙個一維陣列,儲存該陣列即可。讀取時,依次讀取這一陣列,重建時,陣列的第乙個元素的next是第二個元素,第二個next是第三個元素。再比如複雜一點的二叉樹,採用連結串列的形式表示,要儲存該二叉樹,首先遍歷,比如採用中序遍歷,得到乙個一維陣列,儲存之。
還原的時候,依據中序遍歷的原則,可以還原(重建)出二叉樹。
8樓:網友
就是按照結構。
typedef struct stkstk;
stk *cur = &mystruct;
for(cur=mystruct; cur; cur=cur->next)
讀出來是相反的過程。
記錄1記錄2記錄3
c語言中怎麼講連結串列中的資料存到檔案中?
9樓:du瓶邪
fwrite 中,每次寫的都是id,應該是fwrite(te,sizeof(id),1,tel);
另外結構體中name、tel、style、mail都應該是乙個buf,這樣才會將資料寫進去。
例如 char name[32];
10樓:網友
按連結串列從頭到尾的順序,乙個乙個存到檔案中,讀的時候再建立連結串列。
11樓:
只要能把資料寫進檔案,怎麼寫都可以,讀跟寫約定相同的規則即可連結串列的結構是不可能儲存到檔案中的,因為指標都是活在記憶體裡的~比如你可以遍歷連結串列,用fwrite把每個節點都寫進去,讀的時候乙個乙個節點fread出來,但指標域需要重新建立。
如果還需求檔案可以直接開啟看,那就只好ascii的讀寫方式了,遍歷連結串列,把每個節點的資訊fprintf出來,讀的時候相同格式fscanf進去,重建連結串列。
12樓:網友
乙個元素乙個元素的存。
在c語言中怎麼把單連結串列的結構資料寫入檔案和讀取出來啊?
13樓:匿名使用者
給出的**基本沒有問題,不太明確的是上面有註釋的部分。
有問題的話,可能就是第乙個資料未能儲存下來。
另外**裡面變數取名字,可以更有規則一些,比如學生資料庫檔案,取名為fp_stu_database更好,可以一下看出來這個是個檔案變數。
c語言怎麼能讀取連結串列儲存的檔案?請進來看看。拜託了!
14樓:
if((comptr=fopen(filename,"w"))==null)——這樣不行。"w"是原來有檔案的話就刪除後再建乙個同名檔案,沒有的話就建立乙個檔案。"a"是在檔案後追加方式開啟乙個已經存在的檔案,所以你可以先"a"開啟檔案,如果成功,後面寫入的資料就自動接在原檔案後面了;如果失敗,則一般是沒有這個檔案,然後用"w"建立乙個檔案,寫入的資料當然就從"第乙個"開始了。
從檔案裡再讀出來是很簡單的,你用fprintf寫入的,就用fscanf對應讀出來就行了……
c語言中如何將檔案中的資料讀取到連結串列中
15樓:夢屠
我剛好在做專案,學生管理系統。。。給你乙個封裝好的把void load(pnode head)}pnode create_node()
void init_node(pnode pnode,pstu pstu)
void insert_node(pnode head,pnode pnode)
void add_node(pnode head,pstu pstu)
16樓:
怎麼寫進去的就怎麼讀出來,相同的格式,用fscanf把資料讀出來,然後用這些資料重新生成連結串列就可以了。
C語言問題,幫忙看一下,謝謝
哈哈,你剛學c吧 等你學過作業系統就知道函式 包括main函式 裡不能定義太大的陣列的,所以那個int bin 100000000 要放在main函式的外面,定義成乙個全域性陣列。另外上面那位老兄說的也不錯,不知道你的編譯器是按什麼編譯選項編譯的,如果很嚴格的話是不允許在for迴圈中定義變數,必須在...
求大佬看一下這個C語言程式設計我哪錯了
函式fn裡的int t 改為int t,i main中的for i 1 imain中的sum fn a,n 改為sum fn a,i 求大佬幫我看一下這個c語言程式 出錯了?樓主 if 裡 找到了 返回 下標 沒有找到 返回 1 for 迴圈 僅僅 一次,永遠不會找到,除非 第乙個修改如下 原來程式...
哪位大佬能幫我看一下這個C語言哪錯了
把fp fopen stuinfo.dat rb 改為fp fopen studinfo.dat rb 或把fp fopen studinfo.dat wb 改為fp fopen stuinfo.dat wb 這是主要問題 在後加一句fclose fp 這提倡的完善寫法。為檢測讀出到底是否正確,應該...