[轉錄]Re: [問題] fseek and fopen
※ [本文轉錄自 C_and_CPP 看板]
作者: LPH66 (涼宮春日症候群) 看板: C_and_CPP
標題: Re: [問題] fseek and fopen
時間: Tue Nov 7 21:42:50 2006
打個比方吧
一個檔案就像是一個已經有資料的陣列
而檔案指標就像是一個指向陣列中某處的指標 我們可以用fseek來改變它
而寫出資料進檔案就相當於我們把資料放進那個陣列(指標所指的地方)裡
而如果就像你用的 指標調好後直接寫入
那就會把舊的東西蓋掉
(想成是陣列的話就不意外了吧?
array[100]=5; 就會把[100]這位置的東西蓋掉)
那這要如何解決呢?
從陣列來看 我們有兩種方法
(1) 把後面的資料全部乾坤大挪移 往後移出空間來
對回檔案處理上就是要從最後一個byte起往後搬
開檔→for(最後一個byte到插入點) {讀入那個byte; 寫入n個byte之後的位置;}
→移到插入點→寫入新資料→關檔
不過這要預先知道要插入的資料有多長 (算)是一個缺點
(2) 開新的陣列, 把插入點之前的資料copy過去
把要插入的資料加進去
再把插入點之後的資料copy過去
對回檔案處理就是
開新檔案→copy過去插入點前資料→寫入新資料→copy餘下資料→關檔
(→刪舊檔→新檔名改回舊檔名)
這個就不用預先知道要插入的資料有多長了
--
実琴:「河野!你真的就這樣被物質慾望給吸引過去了嗎?!」
亨:「只要穿著女裝擺出親切的樣子,所有必要花費就能全免,似乎一點都不壞啊。」
実琴:「難道你沒有男人的尊嚴了嗎?!」
亨:(斷然道)「沒有。在節衣縮食且生活吃緊的學生面前,沒有那種東西。」
--プリンセス・プリンセス 第二話
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 192.192.197.115
※ 編輯: LPH66 來自: 192.192.197.115 (11/07 21:43)
推
11/07 23:28,
11/07 23:28
→
11/07 23:28,
11/07 23:28
→
11/07 23:29,
11/07 23:29
→
11/07 23:30,
11/07 23:30
--
It is a hard matter, my fellow citizens, to argue with the belly,
since it has no ears.
-- Marcus Porcius Cato
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.109.176.56
→
11/29 21:44, , 1F
11/29 21:44, 1F
推
11/30 00:22, , 2F
11/30 00:22, 2F
推
11/30 06:38, , 3F
11/30 06:38, 3F
推
12/05 19:35, , 4F
12/05 19:35, 4F
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章