C語言操作,C語言檔案操作

2022-12-08 19:20:07 字數 814 閱讀 8677

1樓:

照你那樣說的插入是不太可能的,從底層看,檔案一般都是通過重寫插入刪除資料的。

如果你要插入的話,就是把插入點之後的資料全都複製下來,然後寫上要插入的東西,然後再把複製的資料全部粘上。

刪除也是一樣,把你要刪除的資料用後面的資料覆蓋上。

無論什麼編輯器都是以這樣的原理實現的。可能它們用了這樣或那樣的演算法優化這一過程,但這一過程是不會變的(不只編輯器,os也會對這一過程進行優化)。

所以,如果在檔案的第一個字元插入或刪除,那麼效率是最低的。因為要寫入最多的字元。下面是個例項。

比如檔案中有以下字元

aaaaaa

bbbbbb

…………

zzzzzz

如果你要在第一行插入一個1的話,那麼就要把這些所有的字元都複製到一個位置(可能是記憶體,也可能是磁碟),然後在第一個位置寫上1,再把複製了的東西寫在1之後。

如果你要刪除aaaaaaa這一行的話,就是把bbbbb及之後的所有資料複製並寫在a開始的位置上。

2樓:

幾億行的程式,一行按80字元算,檔案大小為8g.

簡單方法是另開一個新檔案。

(1)讀老檔案,寫新檔案,直到要刪要增的地方。

(2)如果是刪,讀老的,不寫新的。

(3)如果是添,不讀老的,只寫新的。

(4)繼續讀老檔案,寫新檔案,直到eof

(5) 關檔案

(6)用 system("erase /f old_filename")刪去老檔案

(7)用 system("rename ....") 把新檔名換成老檔名。

用c語言編寫作業系統,用C語言編寫作業系統

要有彙編的一定 bai基礎,在看 他會教du你你不會的你要學zhi的匯dao編部分,但是他說的版不細,你需要自己根據 unix某個版本是用c語言 編寫的,在c語言使用之前,用的是彙編。windows傳聞80 是用c語言回編寫的,也有部答分是c和彙編混編的。據說windows2000以後大多是用c 編...

c語言陣列移位操作

思路 所有陣列都移位,那麼其中一個元素的值的溢位位將和相鄰的元素進行合內並,容 因此只要記住上一元素的溢位位,在下一元素移動後合併即可。define elem t 3 定義陣列元素個數char a elem t 被操作的元素char exceeda 0,exceedb 0 記憶溢位位用的變數,其中e...

c語言中異或操作求解答?急,C語言中異或操作求解答?急

按位異或就是在同一位置兩者相同結果位為0,不同則結果位為1如 11 10 01 為異或操作符11 01 111 101 10 10 000 011 結果 01 11 111 110 異或就是諸位比較,當都是1或0時結果為0,當一個為1一個為0時結果為1,比如1010異或1100結果為0110 inc...