国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux標(biāo)準(zhǔn)IO對(duì)文件的基本操作(一)

這篇具有很好參考價(jià)值的文章主要介紹了Linux標(biāo)準(zhǔn)IO對(duì)文件的基本操作(一)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

  在Linux標(biāo)準(zhǔn)IO中,就是用庫(kù)函數(shù)對(duì)文件進(jìn)行操作。在C語(yǔ)言中有許多庫(kù)函數(shù)方便用戶去對(duì)文件進(jìn)行操作。下面談?wù)勔恍┖?jiǎn)單基本的函數(shù),這些函數(shù)都是被包含在頭文件stdio.h中的。

一、fopen()函數(shù)

  要操作一個(gè)文件,我們肯定先打開(kāi)它,這里打開(kāi)并不是去右鍵文件然后左鍵打開(kāi)。這里的打開(kāi)是指讓系統(tǒng)知道程序員要操作哪個(gè)文件,如果聽(tīng)起來(lái)比較抽象可以看看函數(shù)原型便于理解。

  1、函數(shù)原型

FILE *fopen( const char *fname, const char *mode );

  fopen()函數(shù)打開(kāi)由fname(文件名)指定的文件, 并返回一個(gè)關(guān)聯(lián)該文件的流。如果發(fā)生錯(cuò)誤, fopen()返回NULL。mode(方式)是用于決定文件的用途。(例如 用于輸入,輸出,等等)

  這里的文件名是可以包含路徑的文件名,例如"../test.txt"。

  FILE這個(gè)玩意兒把他當(dāng)成一個(gè)數(shù)據(jù)類(lèi)型即可,它是由標(biāo)準(zhǔn)庫(kù)定義的一個(gè)東西,就像我們自己定義結(jié)構(gòu)體時(shí),把結(jié)構(gòu)體名稱(chēng)當(dāng)做一個(gè)數(shù)據(jù)類(lèi)型。

  fopen()函數(shù)的返回值可以理解為一個(gè)代號(hào),方便利用別的函數(shù)對(duì)這個(gè)文件操作。
Mode(方式) 意義
"r" 打開(kāi)一個(gè)用于讀取的文本文件
"w" 創(chuàng)建一個(gè)用于寫(xiě)入的文本文件
"a" 附加到一個(gè)文本文件
"rb" 打開(kāi)一個(gè)用于讀取的二進(jìn)制文件
"wb" 創(chuàng)建一個(gè)用于寫(xiě)入的二進(jìn)制文件
"ab" 附加到一個(gè)二進(jìn)制文件
"r+" 打開(kāi)一個(gè)用于讀/寫(xiě)的文本文件
"w+" 創(chuàng)建一個(gè)用于讀/寫(xiě)的文本文件
"a+" 打開(kāi)一個(gè)用于讀/寫(xiě)的文本文件
"rb+" 打開(kāi)一個(gè)用于讀/寫(xiě)的二進(jìn)制文件
"wb+" 創(chuàng)建一個(gè)用于讀/寫(xiě)的二進(jìn)制文件
"ab+" 打開(kāi)一個(gè)用于讀/寫(xiě)的二進(jìn)制文件

  附加的意思是在文件末尾接著進(jìn)行讀/寫(xiě)操作,"w"沒(méi)有附加說(shuō)明它是擦除原文件內(nèi)容,重新寫(xiě)入。

  舉個(gè)栗子:

FILE* fp = fopen("demo.txt","w"); //意味著以擦除原來(lái)的內(nèi)容重新寫(xiě)入的方式打開(kāi)一個(gè)demo.txt文件

  這兒的fp就相當(dāng)于那個(gè)代號(hào)。

二、fclose()函數(shù)

?  提到了打開(kāi),就得想到關(guān)閉。fclose()函數(shù)就是要完成這件事的函數(shù),下面是函數(shù)原型:

 int fclose( FILE *stream );

  函數(shù)fclose()關(guān)閉給出的文件流, 釋放已關(guān)聯(lián)到流的所有緩沖區(qū)。fclose()執(zhí)行成功時(shí)返回0,否則返回EOF。(這里的EOF已經(jīng)在標(biāo)準(zhǔn)庫(kù)中定義,是一個(gè)常數(shù)

  這個(gè)函數(shù)的形參名字是流,正好對(duì)應(yīng)fopen()函數(shù)的返回值(關(guān)聯(lián)該文件的流),也就是“代號(hào)”,我們上一步已經(jīng)把其返回值保存到fp中。所以要關(guān)閉一個(gè)文件,代碼也就很好寫(xiě)了。

 fclose(fp);

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-607392.html

三、fgetc()函數(shù)

?  當(dāng)學(xué)會(huì)了打開(kāi)和關(guān)閉,接下來(lái)就該去讀讀寫(xiě)寫(xiě)了。我們先從讀開(kāi)始,先讀讀字符,下面是它的函數(shù)原型。

 int fgetc( FILE *stream );

?

  fgetc()函數(shù)返回來(lái)自stream(流)中的下一個(gè)字符,如果到達(dá)文件尾或者發(fā)生錯(cuò)誤時(shí)返回EOF。

  當(dāng)讀取完一個(gè)字符的時(shí)候,讀取的位置會(huì)自動(dòng)跳到下一個(gè)字符后面。(可以利用這個(gè)特點(diǎn)去循環(huán)遍歷一整個(gè)文件)

  函數(shù)很簡(jiǎn)單,例子也好寫(xiě):

    char ch = 0;
    ch = fgetc(fp);
    printf("%c",ch);

?

?

四、小試牛刀

  經(jīng)過(guò)以上的了解,可以寫(xiě)出一個(gè)利用fgetc()函數(shù)去遍歷整個(gè)文件了。

  舉個(gè)栗子,這里有一個(gè)文件demo2.txt其內(nèi)容如圖所示。

Linux標(biāo)準(zhǔn)IO對(duì)文件的基本操作(一)

?  如何去實(shí)現(xiàn)遍歷這個(gè)文本文件呢?

 ?、偈紫瓤隙ㄊ堑美胒open()去讀這個(gè)文件,要想操作一個(gè)文件就得fopen()。

  ②利用循環(huán)語(yǔ)句和fgetc()讀取文件字符,邊讀取變打印。

 ?、圩x完后利用close()函數(shù)關(guān)閉文件。

  具體代碼如下:

#include "stdio.h"

int main()
{
    FILE* fp = fopen("demo2.txt","r");int ch = 0;

    ch = fgetc(fp);
    while(ch != EOF)
    {
        printf("%c",ch);

        ch = fgetc(fp);
    }    
    
    printf("\n");

    fclose(fp);

    return 0;
}

  注:為什么ch不用char類(lèi)型,因?yàn)椴┲鰿PU是ARM架構(gòu),處理char類(lèi)型有點(diǎn)小出入。這里尤其感謝我的老師的指導(dǎo),對(duì)嵌入式又有了新的認(rèn)知。

  結(jié)果如圖:

Linux標(biāo)準(zhǔn)IO對(duì)文件的基本操作(一)

?

  發(fā)現(xiàn)與原文本一模一樣,這個(gè)小試牛刀就算結(jié)束了。

  以上只是本人的理解和所見(jiàn),如有不同見(jiàn)解和看法,歡迎在評(píng)論區(qū)批評(píng)指正。

?

到了這里,關(guān)于Linux標(biāo)準(zhǔn)IO對(duì)文件的基本操作(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包