新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 文件I/O編程之: 標準I/O編程

        文件I/O編程之: 標準I/O編程

        作者: 時間:2013-09-13 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/257135.htm

        2.關閉文件

        (1)說明。

        關閉標準流文件的為fclose(),該將緩沖區內的數據全部寫入到文件中,并釋放系統所提供的文件資源。

        (2)函數格式說明。

        fclose()函數格式如表6.18所示。

        表6.18 fclose()函數語法要點

        所需頭文件

        #includestdio.h>

        函數原型

        intfclose(FILE*stream)

        函數傳入值

        stream:已打開的文件指針

        函數返回值

        成功:0
        失敗:EOF

        3.讀文件

        (1)()函數說明。

        在文件流被打開之后,可對文件流進行讀寫等操作,其中讀操作的函數為()。

        (2)()函數格式。

        fread()函數格式如表6.19所示。

        表6.19 fread()函數語法要點

        所需頭文件

        #includestdio.h>

        函數原型

        size_tfread(void*ptr,size_tsize,size_tnmemb,FILE*stream)

        函數傳入值

        ptr:存放讀入記錄的緩沖區

        size:讀取的記錄大小

        nmemb:讀取的記錄數

        stream:要讀取的文件流

        函數返回值

        成功:返回實際讀取到的nmemb數目
        失敗:EOF

        4.寫文件

        (1)fwrite()函數說明。

        fwrite()函數用于對指定的文件流進行寫操作。

        (2)fwrite()函數格式。

        fwrite()函數格式如表6.20所示。

        表6.20 fwrite()函數語法要點

        所需頭文件

        #includestdio.h>

        函數原型

        size_tfwrite(constvoid*ptr,size_tsize,size_tnmemb,FILE*stream)

        續表

        函數傳入值

        ptr:存放寫入記錄的緩沖區

        size:寫入的記錄大小

        nmemb:寫入的記錄數

        stream:要寫入的文件流

        函數返回值

        成功:返回實際寫入的記錄數目
        失敗:EOF

        5.使用實例

        下面實例的功能跟底層I/O操作的實例基本相同,運行結果也相同(請參考6.3.1節的實例),只是用標準I/O庫的文件操作來替代原先的底層文件系統調用而已。

        讀者可以觀察哪種方法的效率更高,其原因又是什么。

        #includestdlib.h>

        #includestdio.h>

        #defineBUFFER_SIZE1024/*每次讀寫緩存大小*/

        #defineSRC_FILE_NAMEsrc_file/*源文件名*/

        #defineDEST_FILE_NAMEdest_file/*目標文件名文件名*/

        #defineOFFSET10240/*復制的數據大小*/

        intmain()

        {

        FILE*src_file,*dest_file;

        unsignedcharbuff[BUFFER_SIZE];

        intreal_read_len;

        /*以只讀方式打開源文件*/

        src_file=fopen(SRC_FILE_NAME,r);

        /*以寫方式打開目標文件,若此文件不存在則創建*/

        dest_file=fopen(DEST_FILE_NAME,w);

        if(!src_file||!dest_file)

        {

        printf(Openfileerrorn);

        exit(1);

        }

        /*將源文件的讀寫指針移到最后10KB的起始位置*/

        fseek(src_file,-OFFSET,SEEK_END);

        /*讀取源文件的最后10KB數據并寫到目標文件中,每次讀寫1KB*/

        while((real_read_len=fread(buff,1,sizeof(buff),src_file))>0)

        {

        fwrite(buff,1,real_read_len,dest_file);

        }

        fclose(dest_file);

        fclose(src_file);

        return0;

        }

        讀者可以嘗試用其他文件打開函數進行練習。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        linux相關文章:linux教程




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 雅江县| 武邑县| 定南县| 图们市| 大余县| 黔南| 平陆县| 元江| 饶河县| 拜泉县| 萍乡市| 无锡市| 宝山区| 方正县| 时尚| 杂多县| 利津县| 凌源市| 江北区| 盖州市| 永宁县| 梓潼县| 阳城县| 永胜县| 英吉沙县| 伊川县| 永登县| 乳山市| 营山县| 峨边| 清苑县| 勃利县| 横山县| 沁源县| 平顺县| 正镶白旗| 孝义市| 藁城市| 且末县| 浪卡子县| 若尔盖县|