千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > c++fopen的使用詳解

c++fopen的使用詳解

來源:千鋒教育
發(fā)布人:xqq
時(shí)間: 2023-11-22 18:39:11 1700649551

一、打開文件


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

c++fopen是標(biāo)準(zhǔn)C庫中的文件操作函數(shù),用于打開文件并返回指向該文件的FILE指針,使用該函數(shù)前需要包含頭文件#include 。它接收兩個(gè)參數(shù):

文件名:要打開的文件名,可以是絕對(duì)路徑或相對(duì)路徑。 模式:打開文件的模式,其中mode為下列模式之一:
模式 描述
"r" 以只讀方式打開文件。該文件必須存在
"w" 以只寫方式打開文件。如果文件不存在,則創(chuàng)建一個(gè)新文件;如果文件存在,則清空該文件
"a" 以追加方式打開文件。如果文件不存在,則創(chuàng)建一個(gè)新文件;如果文件存在,則在文件末尾寫入
"r+" 以讀寫方式打開文件。該文件必須存在
"w+" 以讀寫方式打開文件。如果文件不存在,則創(chuàng)建一個(gè)新文件;如果文件存在,則清空該文件
"a+" 以讀寫方式打開文件。如果文件不存在,則創(chuàng)建一個(gè)新文件;如果文件存在,則在文件末尾寫入

打開文件失敗時(shí),該函數(shù)將返回空指針NULL。

二、讀寫文件

c++fopen函數(shù)成功打開文件后,我們就可以對(duì)文件進(jìn)行讀寫操作了。

1. 寫入數(shù)據(jù)


    size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream);

fwrite函數(shù)用于向打開的文件中寫入數(shù)據(jù),它的參數(shù)解釋如下:

ptr:要寫入的數(shù)據(jù)的地址。 size:要寫入的每個(gè)數(shù)據(jù)項(xiàng)的大小(單位是字節(jié))。 count:要寫入的數(shù)據(jù)項(xiàng)的個(gè)數(shù)。 stream:指向FILE對(duì)象的指針。

函數(shù)的返回值為實(shí)際寫入到文件中的數(shù)據(jù)項(xiàng)的個(gè)數(shù)。如果沒有成功寫入任何項(xiàng),則函數(shù)將返回0。

2. 讀取數(shù)據(jù)


    size_t fread(void *ptr, size_t size, size_t count, FILE *stream);

fread函數(shù)用于從打開的文件中讀取數(shù)據(jù),它的參數(shù)解釋如下:

ptr:被讀取數(shù)據(jù)的存儲(chǔ)地址。 size:每個(gè)數(shù)據(jù)項(xiàng)的大?。▎挝粸樽止?jié))。 count:要讀取的數(shù)據(jù)項(xiàng)數(shù)。 stream:指向FILE對(duì)象的指針。

函數(shù)的返回值為確切讀取到的數(shù)據(jù)項(xiàng)數(shù)。如果讀取失敗,例如讀到文件末尾或者發(fā)生了錯(cuò)誤,函數(shù)將返回小于count的值。

三、關(guān)閉文件


    int fclose(FILE *stream);

使用c++fopen函數(shù)成功打開文件之后,應(yīng)該盡快關(guān)閉該文件,避免該文件繼續(xù)被占用。

fclose函數(shù)被用來關(guān)閉指定的數(shù)據(jù)流,并釋放與該流相關(guān)的所有資源。如果調(diào)用成功,則返回值為0;如果失敗,則返回EOF。

四、代碼示例


#include 

int main()
{
    FILE *fp = fopen("example.txt", "w");
    if(fp == NULL)
    {
        printf("Failed to open file.\n");
        return 1;
    }
    fprintf(fp, "Hello, World!\n");
    fclose(fp);

    char buffer[100];
    fp = fopen("example.txt", "r");
    if(fp == NULL)
    {
        printf("Failed to open file.\n");
        return 1;
    }
    fread(buffer, sizeof(buffer), 1, fp);
    printf("%s", buffer);
    fclose(fp);

    return 0;
}

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT