C語言 檔案操作

2021-09-26 03:47:07 字數 2827 閱讀 3110

fopen() 檔案的開啟操作表示將給使用者指定的檔案在記憶體分配乙個file結構區,並將該結構的指標返回給使用者程式,以後使用者程式就可用此file指標來實現對指定檔案的訪問操作了。當使用開啟函式時,必須給出檔名、檔案操作方式(讀、寫或讀寫),如果該檔名不存在,就意味著建立(只對寫檔案而言,對讀檔案則出錯),並將檔案指標指向檔案開頭。若已有乙個同名檔案存在,則刪除該檔案,若無同名檔案,則建立該檔案,並將檔案指標指向檔案開頭。

fopen(char *filename,char *type); 

//filename是要開啟檔案的檔名指標,一般用雙引號括起來的檔名表示,也可使用雙反斜槓隔開的路徑名。

//type引數表示了對開啟檔案的操作方式。

可採用的操作方式如下: 方式 含義 「r」 開啟,唯讀; 「w」 開啟,檔案指標指到頭,只寫; 「a」 開啟,指向檔案尾,在已存在檔案中追加; 「rb」 開啟乙個二進位制檔案,唯讀; 「wb」 開啟乙個二進位制檔案,只寫; 「ab」 開啟乙個二進位制檔案,進行追加 ;「r+」 以讀/寫方式開啟乙個已存在的檔案; 「w+」 以讀/寫方式建立乙個新的文字檔案 ;「a+」 以讀/寫方式開啟乙個檔案檔案進行追加 ;「rb+」 以讀/寫方式開啟乙個二進位制檔案; 「wb+」 以讀/寫方式建立乙個新的二進位制檔案 ;「ab+」 以讀/寫方式開啟乙個二進位制檔案進行追加 ;當用fopen()成功的開啟乙個檔案時,該函式將返回乙個file指標,如果檔案開啟失敗,將返回乙個null指標。

file *fp;

if((fp=fopen("test","w"))==null) else

檔案操作完成後,必須要用fclose()函式進行關閉,這是因為對開啟的檔案進行寫入時,若檔案緩衝區的空間未被寫入的內容填滿,這些內容不會寫到開啟的檔案中去而丟失。只有對開啟的檔案進行關閉操作時,停留在檔案緩衝區的內容才能寫到該檔案中去,從而使檔案完整。再者一旦關閉了檔案,該檔案對應的file結構將被釋放,從而使關閉的檔案得到保護,因為這時對該檔案的訪問操作將不會進行。檔案的關閉也意味著釋放了該檔案的緩衝區。

int fclose(file *stream); 

//該函式關閉file指標對應的檔案,並返回乙個整數值。

//若成功地關閉了檔案,則返回乙個0值,否則返回乙個非0值

if(fclose(fp)!=0)  else
int fgetc(file *stream);

int getchar(void);

int fputc(int ch,file *stream);

int putchar(int ch);

int getc(file *stream);

int putc(int ch,file *stream);

char *fgets(char *string,int n,file *stream); 

char *gets(char *s);

int fprintf(file *stream,char *format,variable-list);

int fputs(char *string,file *stream);

int fscanf(file *stream,char *format,variable-list);

int fflush(file *stream); 

int flushall();

fflush()函式將清除由stream指向的檔案緩衝區裡的內容,常用於寫完一些資料後,立即用該函式清除緩衝區,以免誤操作時,破壞原來的資料。 flushall()將清除所有開啟檔案所對應的檔案緩衝區。

void setbuf(file *stream,char *buf); 

void setvbuf(file *stream,char *buf,int type,unsigned size);

這兩個函式將使得開啟檔案後,使用者可建立自己的檔案緩衝區,而不使用fopen()函式開啟檔案設定的預設緩衝區。 對於setbuf()函式,buf指出的緩衝區長度由標頭檔案stdio.h中定義的巨集bufsize的值決定,預設值為512位元組。當選定buf為空時,setbuf函式將使的檔案i/o不帶緩衝。而對setvbuf函式,則由malloc函式來分配緩衝區。引數size指明了緩衝區的長度(必須大於0),而引數type則表示了緩衝的型別,其值可以取如下值: type 值 含義 _iofbf 檔案全部緩衝,即緩衝區裝滿後,才能對檔案讀寫 _iolbf 檔案行緩衝,即緩衝區接收到乙個換行符時,才能對檔案讀寫 _ionbf 檔案不緩衝,此時忽略buf,size的值,直接讀寫檔案,不再經過檔案緩衝區緩衝。

long ftell(file *stream);

int rewind(file *stream);

fseek(file *stream,long offset,int origin);

函式ftell()用來得到檔案指標離檔案開頭的偏移量。當返回值是-1時表示出錯。 rewind()函式用於檔案指標移到檔案的開頭,當移動成功時,返回0,否則返回乙個非0值。 fseek()函式用於把檔案指標以origin為起點移動offset個位元組,其中origin指出的位置可有以下幾種:

seek_set 0 檔案開頭

seek_cur 1 檔案指標當前位置

seek_end 2 檔案尾 

int fread(void *ptr,int size,int nitems,file *stream);

int fwrite(void *ptr,int size,int nitems,file *stream);

c語言檔案操作

rt null ch fgetc fp while ch eof fclose fp 本 例程式的功能是從檔案中逐個讀取字元,在螢幕上顯示。程式定義了檔案指標fp,以讀文字檔案方式開啟檔案 d jrzh example ex1 1.c 並使fp指向該檔案。如開啟檔案出錯,給出提示並退出程式。程式第1...

C語言檔案操作

1.首先要理解幾個概念 檔案 按一定規則儲存在磁碟上的資料集合。檔名 能唯一標識某個磁碟檔案的字串。形式 碟符 路徑 檔名.副檔名 二進位制檔案 資料以二進位制形式在儲存在磁碟上。裝置檔案 輸入 輸出裝置 標準輸入檔案 鍵盤 標準輸出檔案 標準錯誤輸出檔案 顯示器 檔案型指標 c語言是通過名為fil...

C語言檔案操作

1,兩種檔案訪問方式 輸入,輸出方式 順序訪問 直接訪問 2,資料的兩種存放形式 文字檔案 二進位制檔案 3.檔案指標 定義檔案型別指標變數的一般形式 file 指標變數名 例如 file fp1,fp2 4.開啟檔案 在使用檔案之前,需開啟檔案.在c裡使用fopen函式開啟檔案.格式為 fopen...