C語言文件操作大全
1、文件分為ASCII文件和二進(jìn)制文件,ASCII文件也稱文本文件,由一系列字符組成,文件中存儲(chǔ)的是每個(gè)字符的ASCII碼值。
2、FILE *fp;
FILE是文件類型標(biāo)識(shí)符,是C編譯系統(tǒng)定義好的一個(gè)結(jié)構(gòu)體類型,結(jié)構(gòu)體中含有文件名、文件狀態(tài)等信息。
其定義一個(gè)指針變量fp,該變量用于指向一個(gè)文件,存放的是文件緩沖區(qū)的首地址。
3、文件的打開:fopen();
C語言訪問文件的方式一共有12種。由這幾個(gè)關(guān)鍵字組合而成:read,write,append(追加),text(文本文件),banary(二進(jìn)制文件),+表示讀和寫。
4、文件的關(guān)閉:fclose();
操作系統(tǒng)對打開的文件數(shù)量有限制,當(dāng)打開的文件過多的時(shí)候,文件之間的讀寫會(huì)相互影響,所以要及時(shí)關(guān)閉不使用的文件。
該函數(shù)正常關(guān)閉文件時(shí)返回0,否則-1;
關(guān)閉文件的時(shí)候,系統(tǒng)對fp所指向的緩沖區(qū)進(jìn)行清理,把數(shù)據(jù)輸出到磁盤文件,然后釋放緩沖區(qū)單元,使文件指針與具體文件脫鉤。這樣防止文件丟失、信息被破壞。
但是用C語言操作文件的時(shí)候,有時(shí)會(huì)產(chǎn)生亂碼,這個(gè)時(shí)候要檢查一下自己的程序,寫入文件的變量有沒有初始化,有沒有正確關(guān)閉文件。當(dāng)變量沒有初始化的時(shí)候,亂碼經(jīng)常表現(xiàn)為“燙燙燙”。
還有一種可能就是文件編碼方式與程序的編碼方式不一致。Windows下的TXT文件都是ANSI編碼方式。注意自己的編譯器編碼方式。
r代表read的簡寫,+代表可讀可寫,w代表write,b代表bit二進(jìn)制位,t代表text
r 打開只讀文件,該文件必須存在
r+ 打開可讀可寫的文件,該文件必須存在(這里的寫文件是指將之前的文件覆蓋
rt 打開只讀文本文件,該文本必須存在
rt+ 讀寫打開一個(gè)文本文件,允許讀和寫,該文件必須存在(這里的寫文件是指將之前的文件覆蓋
rb 只讀打開一個(gè)二進(jìn)制文件,,該文本必須存在
rb+ 讀寫打開一個(gè)文本文件,允許讀和寫,該文件必須存在(這里的寫文件是指將之前的文件覆蓋
w 打開只寫文件,若文件存在,則文件長度清零,即文件內(nèi)容會(huì)消失,若文件不存在則建立該文件
w+ 打開可讀寫文件,若文件存在,則文件長度清零,即文件內(nèi)容會(huì)消失,若文件不存在則建立該文件(這里的讀文件,同樣需要使用rewind()函數(shù))
wt 打開只寫文本文件,若文件存在,則文件長度清零,即文件內(nèi)容會(huì)消失,若文件不存在則建立該文件
wt+ 打開可讀寫文本文件,若文件存在,則文件長度清零,即文件內(nèi)容會(huì)消失,若文件不存在則建立該文件
wb 打開只寫二進(jìn)制文件,若文件存在,則文件長度清零,即文件內(nèi)容會(huì)消失,若文件不存在則建立該文件
wb+ 打開可讀寫文件,若文件存在,則文件長度清零,即文件內(nèi)容會(huì)消失,若文件不存在則建立該文件
a以附加的方式打開只寫文件,若文件不存在,則建立文件,存在則在文件尾部添加數(shù)據(jù),即追加內(nèi)容
a+以附加的方式打開可讀寫文件,不存在則建立文件,存在則寫入數(shù)據(jù)到文件尾(這里的讀文件,同樣需要使用rewind()函數(shù),但是寫文件不需要rewind()函數(shù),a是追加)
at二進(jìn)制數(shù)據(jù)的追加,不存在則創(chuàng)建,只能寫。
at+讀寫打開一個(gè)文本文件,允許讀或在文本末追加數(shù)據(jù)(這里的讀文件,同樣需要使用rewind()函數(shù),但是寫文件不需要rewind()函數(shù),a是追加)
ab二進(jìn)制數(shù)據(jù)的追加,不存在則創(chuàng)建,只能寫。
ab+讀寫打開一個(gè)二進(jìn)制文件,不存在則創(chuàng)建,允許讀或在文本末追加數(shù)據(jù)(這里的讀文件,同樣需要使用rewind()函數(shù),但是寫文件不需要rewind()函數(shù),a是追加)
總結(jié)
以上所述是小編給大家介紹的C語言文件操作大全,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
相關(guān)文章
C語言斷言函數(shù)assert()的學(xué)習(xí)筆記
在C語言庫函數(shù)中提供了一個(gè)輔助調(diào)試程序的小型庫,它是由assert()宏組成,本文就詳細(xì)的介紹了一下如何使用,感興趣的可以了解一下2021-11-11C語言中函數(shù)指針與軟件設(shè)計(jì)經(jīng)驗(yàn)總結(jié)
今天小編就為大家分享一篇關(guān)于C語言中函數(shù)指針與軟件設(shè)計(jì)經(jīng)驗(yàn)總結(jié),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-12-12數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)- 解析最少換車次數(shù)的問題詳解
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)- 解析最少換車次數(shù)的問題詳解2013-05-05C語言中變量與其內(nèi)存地址對應(yīng)的入門知識(shí)簡單講解
這篇文章主要介紹了C語言中變量與其內(nèi)存地址對應(yīng)的入門知識(shí)簡單講解,同時(shí)這也是掌握指針部分知識(shí)的基礎(chǔ),需要的朋友可以參考下2015-12-12C++實(shí)現(xiàn)一維向量旋轉(zhuǎn)算法
這篇文章主要介紹了C++實(shí)現(xiàn)一維向量旋轉(zhuǎn)算法,非常實(shí)用的經(jīng)典算法,需要的朋友可以參考下2014-08-08C/C++根據(jù)年月日計(jì)算星期幾(蔡勒公式篇)
這篇文章主要給大家介紹了關(guān)于C/C++根據(jù)年月日計(jì)算星期幾(蔡勒公式篇)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03