最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言 文件的打開與關(guān)閉詳解及示例代碼

 更新時(shí)間:2016年08月24日 16:08:53   投稿:lqh  
本文主要介紹C語言 文件的基礎(chǔ)知識(shí),這里整理了相關(guān)資料及示例代碼,有興趣的小伙伴可以參考下

在C語言中,文件操作都是由庫函數(shù)來完成的,這節(jié)介紹文件的打開和關(guān)閉。

文件的打開(fopen函數(shù))

fopen() 函數(shù)用來打開一個(gè)文件,它的原型為:

FILE *fopen(char *filename, char *mode);

filename為文件名(包括文件路徑),mode為打開方式,它們都是字符串。fopen() 會(huì)獲取文件信息,包括文件名、文件狀態(tài)、當(dāng)前讀寫位置等,并將這些信息保存到一個(gè)FILE類型的結(jié)構(gòu)體變量中,然后將該變量的地址返回。

FILE是在stdio.h頭文件中定義的一個(gè)結(jié)構(gòu)體,用來保存文件信息。

如果希望接收 fopen() 的返回值,就需要定義一個(gè) FILE 類型的指針。例如:

FILE *fp = ("demo.txt", "r");

表示以“只讀”方式打開當(dāng)前目錄下的 demo.txt 文件,并使 fp 指向該文件,這樣就可以通過 fp 來操作 demo.txt 了。fp 通常被

稱為文件指針。又如:

FILE *fp = fopen("D:\\demo.txt","rb");

表示以二進(jìn)制方式打開 D 盤下的 demo.txt 文件,允許讀和寫。

打開方式(mode)有多種,見下表:

打開方式 說明
r 以只讀方式打開文件,只允許讀取,不允許寫入。該文件必須存在。
r+ 以讀/寫方式打開文件,允許讀取和寫入。該文件必須存在。
rb+ 以讀/寫方式打開一個(gè)二進(jìn)制文件,允許讀/寫數(shù)據(jù)。
rt+ 以讀/寫方式打開一個(gè)文本文件,允許讀和寫。
w 以只寫方式打開文件,若文件存在則長(zhǎng)度清為0,即該文件內(nèi)容消失,若不存在則創(chuàng)建該文件。
w+ 以讀/寫方式打開文件,若文件存在則文件長(zhǎng)度清為零,即該文件內(nèi)容會(huì)消失。若文件不存在則建立該文件。
a 以追加的方式打開只寫文件。若文件不存在,則會(huì)建立該文件,如果文件存在,寫入的數(shù)據(jù)會(huì)被加到文件尾,即文件原先的內(nèi)容會(huì)被保留(EOF符保留)。
a+ 以追加方式打開可讀/寫的文件。若文件不存在,則會(huì)建立該文件,如果文件存在,則寫入的數(shù)據(jù)會(huì)被加到文件尾后,即文件原先的內(nèi)容會(huì)被保留(原來的EOF符 不保留)。
wb 以只寫方式打開或新建一個(gè)二進(jìn)制文件,只允許寫數(shù)據(jù)。
wb+ 以讀/寫方式打開或建立一個(gè)二進(jìn)制文件,允許讀和寫。
wt+ 以讀/寫方式打開或建立一個(gè)文本文件,允許讀寫。
at+ 以讀/寫方式打開一個(gè)文本文件,允許讀或在文本末追加數(shù)據(jù)。
ab+ 以讀/寫方式打開一個(gè)二進(jìn)制文件,允許讀或在文件末追加數(shù)據(jù)。

文本文件和二進(jìn)制文件的區(qū)別請(qǐng)查看:C語言fopen()打開文本文件與二進(jìn)制文件的區(qū)別

幾點(diǎn)說明

1) 文件打開方式由r、w、a、t、b、+ 六個(gè)字符拼成,各字符的含義是:

  1. r(read):讀
  2. w(write):寫
  3. a(append):追加
  4. t(text):文本文件,可省略不寫
  5. b(banary):二進(jìn)制文件
  6. +:讀和寫

2) 如果沒有“b”字符,文件以文本方式打開。

3) 凡用“r”打開一個(gè)文件時(shí),該文件必須已經(jīng)存在。

4) 在打開一個(gè)文件時(shí),如果出錯(cuò),fopen將返回一個(gè)空指針值NULL。在程序中可以用這一信息來判別是否完成打開文件的工作,并作相應(yīng)的處理。因此常用以下程序段打開文件:

if( (fp=fopen("D:\\demo.txt","rb") == NULL ){
  printf("Error on open D:\\demo.txt file!");
  getch();
  exit(1);
}

這段程序的意義是,如果返回的指針為空,表示不能打開D盤根目錄下的 demo.txt 文件,并給出提示信息“error on open D:\\demo.txt file!”。第3行g(shù)etch()的功能是從鍵盤輸入一個(gè)字符,但不在屏幕上顯示。在這里,該行的作用是等待,只有當(dāng)用戶從鍵盤敲任一鍵時(shí),程序才繼續(xù)執(zhí)行,因此用戶可利用這個(gè)等待時(shí)間閱讀出錯(cuò)提示。敲鍵后執(zhí)行exit(1)退出程序。

5) 把一個(gè)文本文件讀入內(nèi)存時(shí),要將ASCII碼轉(zhuǎn)換成二進(jìn)制碼,而把文件以文本方式寫入磁盤時(shí),也要把二進(jìn)制碼轉(zhuǎn)換成ASCII碼,因此文本文件的讀寫要花費(fèi)較多的轉(zhuǎn)換時(shí)間。對(duì)二進(jìn)制文件的讀寫不存在這種轉(zhuǎn)換。

6) 標(biāo)準(zhǔn)輸入文件 stdin(鍵盤)、標(biāo)準(zhǔn)輸出文件 stdout(顯示器)、標(biāo)準(zhǔn)錯(cuò)誤文件 stderr(顯示器)是由系統(tǒng)打開的,可直接使用。

文件關(guān)閉(fclose函數(shù))

文件一旦使用完畢,應(yīng)該用fclose()函數(shù)把文件關(guān)閉,以釋放相關(guān)資源,避免數(shù)據(jù)丟失。fclose() 的原型為:

int fclose(FILE *fp);

fp 為文件指針。例如:

fclose(fp);

文件正常關(guān)閉時(shí),fclose() 的返回值為0,如果返回非零值則表示有錯(cuò)誤發(fā)生。

以上就是對(duì)文件的基礎(chǔ)資料進(jìn)行的詳解,后續(xù)繼續(xù)補(bǔ)充相關(guān)資料,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • vscode+wsl運(yùn)行編譯c++的實(shí)現(xiàn)

    vscode+wsl運(yùn)行編譯c++的實(shí)現(xiàn)

    本文主要介紹了vscode+wsl運(yùn)行編譯c++的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • C++遞歸與分治算法原理示例詳解

    C++遞歸與分治算法原理示例詳解

    這篇文章主要為大家介紹了C++遞歸與分治算法的策略原理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-11-11
  • C語言實(shí)題講解快速掌握單鏈表下

    C語言實(shí)題講解快速掌握單鏈表下

    單鏈表是后面要學(xué)的雙鏈表以及循環(huán)鏈表的基礎(chǔ),要想繼續(xù)深入了解數(shù)據(jù)結(jié)構(gòu)以及C語言,我們就要奠定好這塊基石!接下來就和我一起學(xué)習(xí)吧
    2022-04-04
  • C/C++?Qt?Tree與Tab組件實(shí)現(xiàn)分頁菜單功能

    C/C++?Qt?Tree與Tab組件實(shí)現(xiàn)分頁菜單功能

    這篇文章主要介紹了C/C++?Qt?Tree與Tab組件實(shí)現(xiàn)分頁菜單功能,實(shí)現(xiàn)一個(gè)類似于樹形菜單欄的功能,當(dāng)用戶點(diǎn)擊菜單欄中的選項(xiàng)時(shí)則會(huì)跳轉(zhuǎn)到不同的頁面上,本文簡(jiǎn)單給大家分享實(shí)現(xiàn)代碼,感興趣的朋友跟隨小編一起看看吧
    2021-11-11
  • C++中頭文件的概念與基本編寫方法

    C++中頭文件的概念與基本編寫方法

    這篇文章主要介紹了C++中頭文件的概念與基本編寫方法,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-12-12
  • 深入理解C++中的new和delete并實(shí)現(xiàn)對(duì)象池

    深入理解C++中的new和delete并實(shí)現(xiàn)對(duì)象池

    這篇文章主要介紹了C++中的new和delete并實(shí)現(xiàn)對(duì)象池,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • opencv利用霍夫變換檢測(cè)直線進(jìn)行圖片校正

    opencv利用霍夫變換檢測(cè)直線進(jìn)行圖片校正

    這篇文章主要為大家詳細(xì)介紹了opencv利用霍夫變換檢測(cè)直線對(duì)圖片進(jìn)行校正,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • C++常用字符串函數(shù)大全(2)

    C++常用字符串函數(shù)大全(2)

    這篇文章主要給大家分享的是C++常用字符串函數(shù)的大全,cstring.h庫即C語言中的string.h庫,它是C語言中為字符串提供的標(biāo)準(zhǔn)庫。C++對(duì)此進(jìn)行了兼容,所以我們?cè)贑++當(dāng)中一樣可以使用,下面文章的詳細(xì)內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • C++調(diào)用Matlab函數(shù)求特征值

    C++調(diào)用Matlab函數(shù)求特征值

    這篇文章主要為大家詳細(xì)介紹了C++調(diào)用Matlab函數(shù)求特征值,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • 必須知道的C語言八大排序算法(收藏)

    必須知道的C語言八大排序算法(收藏)

    這篇文章主要介紹了C語言八大排序算法的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-10-10

最新評(píng)論

古丈县| 博客| 安西县| 汶川县| 盈江县| 水城县| 广平县| 榆中县| 桐梓县| 盐津县| 台山市| 光山县| 湘阴县| 靖江市| 基隆市| 南部县| 宁都县| 栾城县| 巴塘县| 政和县| 福清市| 乐都县| 广灵县| 宁远县| 绍兴市| 喜德县| 盐城市| 土默特左旗| 富民县| 鄱阳县| 嘉义县| 威海市| 思茅市| 通州区| 浦城县| 富民县| 故城县| 宁海县| 汉源县| 阿坝| 桃江县|