關於FILE指標的使用

2021-09-30 06:15:44 字數 3233 閱讀 3973

語言檔案系統稱為流檔案(stream),正文流(正文檔案),二進位製流(二進位制檔案)

一、檔案操作的一般過程

定義檔案指標

file *

開啟檔案

fopen

對檔案進行讀寫

二、系統已定義的與檔案操作有關的資料結構全都在stdio.h中

1.file

結構體file *fr,*fp,*fw;

file* 指標作為檔案控制代碼,是檔案訪問的唯一標識,它由fopen函式建立,fopen開啟檔案成功,則返回乙個有效的file*指標,否則返回空指標null,例如:

file *pfile = fopen("test.txt", "a+");

if(pfile != null)

2.標準檔案指標

file *stdin,*stdout,*stderr,

stdin 指鍵盤輸入

stdout 指顯示器

stderr 指出錯輸出裝置,也指顯示器

這些變數已成功初始化,可直接使用。例如:

fprintf("%d",stdin);

三、常用操作函式

1.fopen

格式:file *fopen(檔名字串,開啟方式串)

例:file *fr; fr=fopen("c://user","r");

字串操作:

1)"r"

或"rt":正文檔案唯讀方式開啟。檔案不存在,則開啟失敗(順序讀)"w"或"wt":正文檔案只寫方式開啟。若檔案不存在,則建立檔案;若檔案存在,則刪除檔案內容,重建空檔案(順序寫);(擷取檔案長度為0)

2) "a"

或"at":正文檔案新增方式。檔案不存在,則建立檔案(順序新增寫

) 3) "r+"或"rt++":正文檔案讀寫開啟,檔案不存在,則開啟失敗(順序讀/寫、隨機讀/寫,含改寫與新增

); 4) "w+"或"w++":正文檔案讀寫方式開啟,檔案不存在,則建立檔案;否則擷取檔案長度為0(順序讀/寫,隨機讀/寫,對寫入的內容可以讀或改寫或新增)

5) ~b:正文檔案→二進位制檔案

順序讀→順序/隨機讀(「rb」)

eg:"r"或

"rt"→"rb"

順序寫("wb")

順序新增寫

("ab")

順...,隨...,含

...("rb+")

順...,新增

("wb+")

順...,新增

("ab+")

使用fopen時,但凡含r字母的開啟方式,一定要加判斷,檔案是否開啟成功,否則程式不會報告錯誤,會執行下去。

如:file *fr;

fr=fopen("abc.txt","r");

if(fr==null){

printf("file not open!/n");

return; /*或exit(1);*/ 2.

檔案關閉

fclose(file *fp)

一般地,fclose(fp)與fopen應配對使用,特別是含有寫方式的檔案,若不關閉會造成檔案資料丟失。

fcloseall(void):關閉當前所有開啟的檔案。

3.單位元組的輸入函式

可適用於二進位制與正文檔案操作

int fgetc(file *fp)

int fputc(char ch.file *fp)

fgetc的返回值都是正數(0~255)

檔案無可讀位元組則返回-1(eof)

正文檔案與二進位制檔案讀寫的區別:

正文檔案讀到13 10時,將自動跳過13,讀出10並返回;正文檔案寫入10時,首先自動寫入13再寫入10. 4.

檔案指標與檔案指標操作函式

檔案指標是檔案作業系統資料結構內部的一種資料指標,它用於標註檔案當前讀寫位置,c語言中,檔案指標以位元組為單位,檔案第乙個位元組位置號為0,若檔案長度為n個位元組,則最後乙個位元組的位置號為n-1,長度為n位元組的檔案有效讀寫範圍為0~n-1。指標位置在此之外進行讀/寫操作,則失敗;讀寫函式返回-1(eof);

c語言的檔案指標採用long型值;

執行檔案讀/寫操作後,檔案指標自動向後移動,指到新的待讀/寫位置。

檔案指標移動函式

rewind(file *fp)

檔案指標重置為

0 fseek(file *fp,long off,int pos) 

從pos位置開始,移動off個位元組。

pos:0 檔案開始

1 檔案當前指標位置

2 檔案結尾(檔案長度為n,則指標位置為n)

例:fseek(fp,0l,0);←→rewind(fp)

fseek(fp,-1l,2); /*移動指標到最後乙個位元組

*/ fseek(fp,-2l,1); /*移動指標到當前位置的前兩個位置

*/ long ftell(file *fp)

求當前指標位置

例:求檔案長度

fseek(fp,ol,2);

len=ftell(fp);

則len為檔案長度

檔案指標的特性:

可在「負無窮」到「正無窮」任意移動;

在0~n-1之外進行讀操作,則讀失敗;讀失敗後,feof函式為真;

從n位置開始寫入,則為新增;

從0~n位置之外開始寫也可,其行為不必掌握,因為幾乎無用;

無論任何方式,剛開啟檔案時,ftell函式返回值都是0,含a方式的檔案,只要一寫(第一次寫),檔案指標自動移動到n位置處。

int feof(file *fp)

若檔案讀失敗,則返回非0值,否則返回0值;僅用於讀是否到檔案尾。

任何fseek操作使feof為假,即使檔案指標在0~n-1之外。 1.

正文檔案讀/寫函式

fscanf(fp...) 

fprintf(fp...)

其中,...與scanf和printf用法完全相同

. scanf(...)←→fscanf(stdin...)

printf(...)←→fprintf(stdout...)

2.二進位制檔案讀/寫函式,即位元組塊函式

int fread(char *buf,int size,int count,file *fp) 

int fwrite(char *buf,int&nbtp;size,int count,file *fp)

從檔案讀出size x count個位元組到記憶體塊buf;從記憶體塊buf寫入size x count個位元組到檔案,返回實際讀出/寫入的位元組數。

FILE指標的使用

fopen s wfopen s 開啟檔案 fclose 關閉檔案 fread 讀取 fwrite 寫入 errno t fopen s file pfile,const char filename,const char mode pfile file指標的位址 filename 檔案路徑 mode...

關於File檔案類的使用

1.file類的建立目錄和檔案的方法 mkdirs 方法 建立此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄。mkdir 方法 建立此抽象路徑名指定的目錄。使用file在電腦上建立目錄 呼叫mkdirs 建立此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄。mkdir 方法 建立此抽象路徑...

關於File的練習

遍歷指定目錄下的所有檔案或資料夾,包括子檔案目錄中的檔案 指定目錄的資料夾所佔大小 刪除指定目錄的資料夾的全部 採用遞迴的思想解決此類問題。test public void test3 public void printsubfile file file else public long lengt...