C C 檔案操作(一) FILE指標

2021-04-23 18:42:49 字數 2774 閱讀 6884

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

正文檔案的操作一般是順序檔案;

二進位制檔案的操作都是隨機檔案。

一、檔案操作的一般過程

定義檔案指標 file *

開啟檔案 fopen

對檔案進行讀寫

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

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

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

標準檔案指標 file *stdin,*stdout,*stderr,

stdin 指鍵盤輸入

stdout 指顯示器

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

這些變數已成功初始化,可直接使用.

三、常用操作函式

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

例:file *fr; fr=fopen("c://user//abc.txt","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);*/

檔案關閉 fclose(file *fp)

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

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

單位元組的輸入函式 可適用於二進位制與正文檔案操作

int fgetc(file *fp)

int fputc(char ch.file *fp)

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

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

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

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

檔案指標與檔案指標操作函式 檔案指標是檔案作業系統資料結構內部的一種資料指標,它用於標註檔案當前讀寫位置,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為檔案長度

檔案指標的特性:

正文檔案讀/寫函式 fscanf(fp...)

fprintf(fp...)

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

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

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

二進位制檔案讀/寫函式,即位元組塊函式 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檔案指標相關操作

檔案的開啟模式 w 開啟只寫檔案,若檔案存在則檔案長度清為0,即該檔案內容會消失。若檔案不存在則建立該檔案。w 開啟可讀寫檔案,若檔案存在則檔案長度清為零,即該檔案內容會消失。若檔案不存在則建立該檔案。wb 只寫方式開啟或新建乙個二進位制檔案,只允許寫資料。wb 讀寫方式開啟或建立乙個二進位制檔案,...

File檔案操作

open public static filestream open string path,filemode mode filemode createnew 指定作業系統應建立新檔案。此操作需要 fileiopermissionaccess.write。如果檔案已存在,則將引發 ioexcepti...

FILE 指標的相關操作

file是在c標準庫中 stdio.h 中定義的乙個結構體,通常用指標的方式儲存在記憶體中,其內容描述了乙個檔案,或者說 流 更當。1.開啟檔案 您可以使用 fopen 函式來建立乙個新的檔案或者開啟乙個已有的檔案,這個呼叫會初始化型別 file 的乙個物件,型別 file 包含了所有用來控制流的必...