C語(yǔ)言 文件指針
C語(yǔ)言中讀寫每一個(gè)文件時(shí),必須了解如下信息:文件在磁盤中的存儲(chǔ)位置、文件的類型(二進(jìn)制文件或文本文件)、對(duì)文件進(jìn)行何種操作(讀或?qū)懀?、?duì)文件以怎樣的方式讀寫(讀一個(gè)字符、或讀一串字符等)以及該文件調(diào)入到內(nèi)存緩沖區(qū)的地址。標(biāo)準(zhǔn)文件系統(tǒng)為每一個(gè)文件定義一個(gè)結(jié)構(gòu)體變量,命名為FILE,該結(jié)構(gòu)體變量中包含了要讀寫文件的基本信息。FILE結(jié)構(gòu)體類型一般定義在stdio.h頭文件 中。具體定義如下:
typedef struct
{
short level; /*緩沖區(qū)滿空程度*/
unsigned flags; /*文件狀態(tài)標(biāo)志*/
char fd; /*文件描述符*/
unsigned char hold; /*無(wú)緩沖則不讀取字符*/
short bsize; /*緩沖區(qū)大小*/
unsigned char *buffer; /*數(shù)據(jù)緩沖區(qū)*/
unsigned char *curp; /*當(dāng)前位置指針*/
unsigned istemp; /*臨時(shí)文件指示器*/
short token; /*用于有效性檢查*/
} FILE;
FILE結(jié)構(gòu)體的定義是由編譯系統(tǒng)完成的,對(duì)于編程人員來(lái)說(shuō),只要掌握它的使用即可,不必深究其內(nèi)涵。
當(dāng)需要打開(kāi)一個(gè)文件時(shí),系統(tǒng)將為該文件定義一個(gè)FILE型結(jié)構(gòu)體變量,該變量中包含了文件的相關(guān)信息,并返回該文件在內(nèi)存緩沖區(qū)的地址,這樣,對(duì)文件的操作就轉(zhuǎn)化為對(duì)指針的操作。例如:
FILE *fp;
這就定義了一個(gè)FILE型的指針,指針名為fp。但要注意,此時(shí)指針fp沒(méi)有指向任何地址,需要用文件打開(kāi)操作,將一個(gè)文件的地址賦給fp指針。
點(diǎn)擊加載更多評(píng)論>>