天天看點

C/c++檔案操作總結之檔案打開與讀寫(持續跟新)1 文本的打開與關閉

C/C++檔案操作總結之檔案打開與讀寫

  • 1 文本的打開與關閉

此系列隻是對于檔案打開讀寫操作上的一系列總結,對于更加深入的原理,以及C和C++的差別本人了解的不是很深入,文章中有問題的地方歡迎大家批評指正。

1 文本的打開與關閉

這裡的”打開“和”關閉“可調用标準庫stdio.h中的fopen和fclose。

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

函數參數:

  1. filename:檔案名,包括路徑,如果不顯示含有路徑,則表示目前路徑。例如,“D:\\folder\\file.text”
  2. mode:檔案打開的模式,指出對該檔案可進行的操作。常見的打開模式如“r”表示隻讀,“w”表示隻寫,“rw”表示讀寫,“a”并表示追加寫入。
    C/c++檔案操作總結之檔案打開與讀寫(持續跟新)1 文本的打開與關閉
    傳回值:打開成功,傳回該文進對應的FILE類型的指針;打開失敗則傳回NULL。故需定義FILE類型的指針變量,儲存該函數的傳回值。可根據該函數的傳回值判斷檔案是否打開成功。

關閉函數fclose()的原型如下。

int fclose(FILE *fp);

函數參數:

fp:已經打開的檔案指針

傳回值:0,正常關閉,否則傳回EOF(-1)。

順便一提:

C語言的檔案指針時用過FILE *fp這種形式進行定義的。

關于FILE結構有如下定義:

#ifndef	 _FILE_DEFINED
struct _iobuf {
		char *_ptr;		//檔案輸入的下一個位置
		int	_cnt;		//目前緩沖區的相對位置
		char *_base;	//指基礎位置(即檔案的起始位置)
		int _flag;		//檔案标志
		int _file;		//檔案描述id
		int _charbuf;	//檢查緩沖區狀況,如果沒有緩沖區則不讀取
		int _bufsiz;	//檔案緩沖區大小
		char *_tempfname;//臨時檔案名
		};
typedef struct _iobuf FILE;
#define _FIEL_DEFINED
#endif
           

C程式用不同的FILE結構管理每個檔案。程式員可以使用檔案,但是不需要知道FILE結構的細節。實際上,FILE結構時間接地作業系統的檔案控制塊(FCB)來實作對檔案的操作的,如下圖:

C/c++檔案操作總結之檔案打開與讀寫(持續跟新)1 文本的打開與關閉