程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C說話 文件的翻開與封閉詳解及示例代碼

C說話 文件的翻開與封閉詳解及示例代碼

編輯:關於C++

C說話 文件的翻開與封閉詳解及示例代碼。本站提示廣大學習愛好者:(C說話 文件的翻開與封閉詳解及示例代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話 文件的翻開與封閉詳解及示例代碼正文


在C說話中,文件操作都是由庫函數來完成的,這節引見文件的翻開和封閉。

文件的翻開(fopen函數)

fopen() 函數用來翻開一個文件,它的原型為:

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

filename為文件名(包含文件途徑),mode為翻開方法,它們都是字符串。fopen() 會獲得文件信息,包含文件名、文件狀況、以後讀寫地位等,並將這些信息保留到一個FILE類型的構造體變量中,然後將該變量的地址前往。

FILE是在stdio.h頭文件中界說的一個構造體,用來保留文件信息。

假如願望吸收 fopen() 的前往值,就須要界說一個 FILE 類型的指針。例如:

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

表現以“只讀”方法翻開以後目次下的 demo.txt 文件,並使 fp 指向該文件,如許便可以經由過程 fp 來操作 demo.txt 了。fp 平日被

稱為文件指針。又如:

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

表現以二進制方法翻開 D 盤下的 demo.txt 文件,許可讀和寫。

翻開方法(mode)有多種,見下表:

翻開方法 解釋 r 以只讀方法翻開文件,只許可讀取,不許可寫入。該文件必需存在。 r+ 以讀/寫方法翻開文件,許可讀取和寫入。該文件必需存在。 rb+ 以讀/寫方法翻開一個二進制文件,許可讀/寫數據。 rt+ 以讀/寫方法翻開一個文本文件,許可讀和寫。 w 以只寫方法翻開文件,若文件存在則長度清為0,即該文件內容消逝,若不存在則創立該文件。 w+ 以讀/寫方法翻開文件,若文件存在則文件長度清為零,即該文件內容會消逝。若文件不存在則樹立該文件。 a 以追加的方法翻開只寫文件。若文件不存在,則會樹立該文件,假如文件存在,寫入的數據會被加到文件尾,即文件本來的內容會被保存(EOF符保存)。 a+ 以追加方法翻開可讀/寫的文件。若文件不存在,則會樹立該文件,假如文件存在,則寫入的數據會被加到文件尾後,即文件本來的內容會被保存(本來的EOF符 不保存)。 wb 以只寫方法翻開或新建一個二進制文件,只許可寫數據。 wb+ 以讀/寫方法翻開或樹立一個二進制文件,許可讀和寫。 wt+ 以讀/寫方法翻開或樹立一個文本文件,許可讀寫。 at+ 以讀/寫方法翻開一個文本文件,許可讀或在文本末追加數據。 ab+ 以讀/寫方法翻開一個二進制文件,許可讀或在文件末追加數據。

文本文件和二進制文件的差別請檢查:C說話fopen()翻開文本文件與二進制文件的差別

幾點解釋

1) 文件翻開方法由r、w、a、t、b、+ 六個字符拼成,各字符的寄義是:

  1. r(read):讀
  2. w(write):寫
  3. a(append):追加
  4. t(text):文本文件,可省略不寫
  5. b(banary):二進制文件
  6. +:讀和寫
  7. 2) 假如沒有“b”字符,文件以文本方法翻開。

    3) 凡用“r”翻開一個文件時,該文件必需曾經存在。

    4) 在翻開一個文件時,假如失足,fopen將前往一個空指針值NULL。在法式中可以用這一信息來辨別能否完成翻開文件的任務,並作響應的處置。是以經常使用以下法式段翻開文件:

    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行getch()的功效是從鍵盤輸出一個字符,但不在屏幕上顯示。在這裡,該行的感化是期待,只要當用戶從鍵盤敲任一鍵時,法式才持續履行,是以用戶可應用這個期待時光浏覽失足提醒。敲鍵後履行exit(1)加入法式。

    5) 把一個文本文件讀入內存時,要將ASCII碼轉換成二進制碼,而把文件以文本方法寫入磁盤時,也要把二進制碼轉換成ASCII碼,是以文本文件的讀寫要消費較多的轉換時光。對二進制文件的讀寫不存在這類轉換。

    6) 尺度輸出文件 stdin(鍵盤)、尺度輸入文件 stdout(顯示器)、尺度毛病文件 stderr(顯示器)是由體系翻開的,可直接應用。

    文件封閉(fclose函數)

    文件一旦應用終了,應當用fclose()函數把文件封閉,以釋放相干資本,防止數據喪失。fclose() 的原型為:

    int fclose(FILE *fp);

    fp 為文件指針。例如:

    fclose(fp);

    文件正常封閉時,fclose() 的前往值為0,假如前往非零值則表現有毛病產生。

    以上就是對文件的基本材料停止的詳解,後續持續彌補相干材料,感謝年夜家對本站的支撐!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved