如題所說,這篇博文就來聊聊檔案的寫入,也就是將資料從程式中儲存至指定檔案當中。
手把手教會你c語言檔案操作(1)
手把手教會你c語言檔案操作(2)
檔案操作相關函式
好吧,我也知道沒啥人看我的寫的部落格,就不自取其辱了,直接進入正題吧。
首先要明確一下這個操作許可權指的是什麼。它是指我們用fopen開啟某個檔案時所指定的第二引數。
關於這個第二引數在講fopen時並沒有多說,只是簡單地指定了乙個唯讀許可權,當然,在沒有涉及到檔案寫入的操作時,這個唯讀許可權完全足夠,但到了就要注意一下了。
開啟方式
說明「r」
以「唯讀」方式開啟檔案。只允許讀取,不允許寫入。檔案必須存在,否則開啟失敗。
「w」以「寫入」方式開啟檔案。如果檔案不存在,那麼建立乙個新檔案;如果檔案存在,那麼清空檔案內容(相當於刪除原檔案,再建立乙個新檔案)。
「a」以「追加」方式開啟檔案。如果檔案不存在,那麼建立乙個新檔案;如果檔案存在,那麼將寫入的資料追加到檔案的末尾(檔案原有的內容保留)。
「r+」
以「讀寫」方式開啟檔案。既可以讀取也可以寫入,也就是隨意更新檔案。檔案必須存在,否則開啟失敗。
「w+」
以「寫入/更新」方式開啟檔案,相當於w和r+疊加的效果。既可以讀取也可以寫入,也就是隨意更新檔案。如果檔案不存在,那麼建立乙個新檔案;如果檔案存在,那麼清空檔案內容(相當於刪除原檔案,再建立乙個新檔案)。
「a+」
以「追加/更新」方式開啟檔案,相當於a和r+疊加的效果。既可以讀取也可以寫入,也就是隨意更新檔案。如果檔案不存在,那麼建立乙個新檔案;如果檔案存在,那麼將寫入的資料追加到檔案的末尾(檔案原有的內容保留)。
「t」文字檔案。如果不寫,預設為"t"。
「b」以二進位制方式開啟檔案,可以與上面的許可權組合,如 rb 等。
上面的許可權及說明要牢記喲,記不住的話也要知道在**能夠找到它們哦。
還有就是,沒有直接能夠插入資料的許可權!!!
這麼說可能不好理解,舉個例子吧:
比如我有乙個字串:abcdefg
我想要在 c 後面插入 12 這個數字,我們想要的結果是這樣的:
abc12defg
可事實上我們如果先偏移檔案操作指標至 c 之後再寫入內容,得到的將會是:abc12fg
也就是說它是把原來那個位置上的內容給覆蓋掉了。
如果還執有疑惑的童鞋不要急,敢於質疑是乙個好習慣,不過我們先來看看寫入函式並掌握它的用法,再來驗證一番。
函式原型:
size_t
fwrite
(void
*ptr,
size_t size,
size_t count, file *fp)
; 資料** 每一塊多大 一共多少塊 寫到哪兒
@ptr: 臨時存放要寫入的內容的緩衝區
@size: 每次讀取的資料塊的大小
@count: 一共讀取多少塊資料
返回值:成功寫入的資料塊塊數( 0
<= 返回值 <= count )。
這個函式與 fread 函式引數基本一致,不做過多介紹,簡單說明一下第一引數,一般是乙個緩衝區,但他最好是有內容的,然後要注意這個緩衝區一般都是以字串形式存在,要注意你所寫的內容是否需要字串結束符\0。
然後就是寫入時選擇的許可權問題,要考慮一下,若是檔案存在,我是想要清空裡面的內容呢,還是只是想要追加在原有檔案之後?
若是不想清空,就用 r+: 這個就是在原有基礎上覆蓋,在什麼位置寫入多少,這個檔案就改變多少。
若是不想清空,也不想修改原有資料,只是追加就用 a 或 a+ 。
若是清空則用 w 或 w+ 。
舉個例子,順便驗證一下在 1 中所提到的問題:
要寫入的目標檔案 a.txt 初始內容。
執行完畢之後:
這樣同樣也佐證了我上面所說 **沒有直接插入操作的許可權** 這一說法。
函式原型:
int
fprintf
(file *stream,
const
char
*format,...);
手把手教會你c語言檔案操作
上例項:
還是剛剛的 a.txt ,我們寫入乙個學生的簡單基本資訊
zahngsan m 25 csdn
#
include
intmain()
fclose
(fp)
;return0;
}
執行結果:
好啦,到這裡檔案操作就介紹完了,可能有同學會說我寫的太少了,攏共也就不超過 10 個函式就說講完了,別人都講了好多呢。
確實,剩下的函式,我並沒有說不要學,只是我覺得有這些就足夠你完成想要完成基本的檔案操作了,若是想要深入研究,可以先將我沒有講到的函式嘗試一遍,掌握用法,再去深入了解。
基礎已經講完,至於你能將他們玩的多花裡胡哨就看個人本事啦。
手把手教會你C語言檔案操作(1)
在c語言學習過程中,對於資料的儲存是無法避免的問題之一。我們學習了用陣列來儲存某一種型別資料,用結構體來儲存多種不同型別資料,但是這些都是程式中的容器,程式退出後這些資料也就隨之消失了。所以我們嘗試尋找一種方式,能夠將資料儲存與程式分離開來。在 linux 中有這麼一句話 一切皆檔案。所以我們嘗試將...
手把手教會你C語言檔案操作(2)
linux c 檔案操作 手把手教會你c語言檔案操作 1 2.檔案操作位置是否到達了文件末尾?1.1 偏移操作 說是說指標偏移,將其稱之為 尋找操作位置 也未嘗不可,也更加容易記住這個函式。為什麼這麼說呢,尋找 seek,不難猜出這個函式就是 fseek。來看看函式原型 int fseek file...
手把手入門C語言 列舉
列舉中的變數是遞增的 預設是0開始 首元素的值是0 include include 列舉中的變數是遞增的 預設是0開始 首元素的值是0 定義乙個列舉 enum weekday main 測試列舉中的變數是遞增的 修改下面的 monday 0,tuesday,wednesday,thursday,fr...