亚洲欧美精品沙发,日韩在线精品视频,亚洲Av每日更新在线观看,亚洲国产另类一区在线5

<pre id="hdphd"></pre>

  • <div id="hdphd"><small id="hdphd"></small></div>
      學習啦>學習英語>專業(yè)英語>計算機英語>

      c語言fopen函數(shù)的用法

      時間: 長思709 分享

        fopen()是C語言中一個常用的函數(shù),用來以指定的方式打開文件,其原型為:

        FILE * fopen(const char * path, const char * mode);下面我們來看看c語言fopen函數(shù)的用法。

        【參數(shù)】path為包含了路徑的文件名,mode為文件打開方式。

        mode有以下幾種方式:

        打開方式說明

        r以只讀方式打開文件,該文件必須存在。

        r+以讀/寫方式打開文件,該文件必須存在。

        rb+以讀/寫方式打開一個二進制文件,只允許讀/寫數(shù)據(jù)。

        rt+以讀/寫方式打開一個文本文件,允許讀和寫。

        w打開只寫文件,若文件存在則長度清為0,即該文件內(nèi)容消失,若不存在則創(chuàng)建該文件。

        w+打開可讀/寫文件,若文件存在則文件長度清為零,即該文件內(nèi)容會消失。若文件不存在則建立該文件。

        a以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數(shù)據(jù)會被加到文件尾,即文件原先的內(nèi)容會被保留(EOF符保留)。

        a+以附加方式打開可讀/寫的文件。若文件不存在,則會建立該文件,如果文件存在,則寫入的數(shù)據(jù)會被加到文件尾后,即文件原先的內(nèi)容會被保留(原來的EOF符 不保留)。

        wb以只寫方式打開或新建一個二進制文件,只允許寫數(shù)據(jù)。

        wb+以讀/寫方式打開或建立一個二進制文件,允許讀和寫。

        wt+以讀/寫方式打開或建立一個文本文件,允許讀寫。

        at+以讀/寫方式打開一個文本文件,允許讀或在文本末追加數(shù)據(jù)。

        ab+以讀/寫方式打開一個二進制文件,允許讀或在文件末追加數(shù)據(jù)。

        在POSIX 系統(tǒng),包含Linux 下都會忽略 b 字符。由fopen()所建立的新文件會具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)權限,此文件權限也會參考umask 值。

        二進制和文本模式的區(qū)別:

        在windows系統(tǒng)中,文本模式下,文件以"\r\n"代表換行。若以文本模式打開文件,并用fputs等函數(shù)寫入換行符"\n"時,函數(shù)會自動在"\n"前面加上"\r"。即實際寫入文件的是"\r\n" 。

        在類Unix/Linux系統(tǒng)中文本模式下,文件以"\n"代表換行。所以Linux系統(tǒng)中在文本模式和二進制模式下并無區(qū)別。

        更多信息請查看:C語言fopen()打開文本文件與二進制文件的區(qū)別

        有些C編譯系統(tǒng)可能不完全提供所有這些功能,有的C版本不用"r+","w+","a+",而用"rw","wr","ar"等,讀者注意所用系統(tǒng)的規(guī)定。

        【返回值】文件順利打開后,指向該流的文件指針就會被返回。若果文件打開失敗則返回NULL,并把錯誤代碼存在errno 中。

        注意:一般而言,開文件后會作一些文件讀取或寫入的動作,若開文件失敗,接下來的讀寫動作也無法順利進行,所以在fopen()后請作錯誤判斷及處理。

        文件操作完成后,需要將文件關閉,一定要注意,否則會造成文件所占用內(nèi)存泄露和在下次訪問文件時出現(xiàn)問題。

        文件關閉后,需要將文件指針指向空,這樣做會防止出現(xiàn)游離指針,而對整個工程造成不必要的麻煩,如fp = NULL。

        【實例】打開一個文件然后關閉該文件。

        #include<stdio.h>

        #include<string.h>

        #include<stdlib.h>

        int main()

        {

        FILE* fstream;

        char msg[100] = "Hello!I have read this file.";

        fstream=fopen("test.txt","at+");

        if(fstream==NULL)

        {

        printf("open file test.txt failed!\n");

        exit(1);

        }

        else

        {

        printf("open file test.txt succeed!\n");

        }

        fclose(fstream);

        return 0;

        }

      512618