C語言檔案操作

2021-09-25 02:08:35 字數 4735 閱讀 6830

目錄

檔案操作的流程:

1.fopen()

2.fclose()

3.fwrite()

4.fread()

5.fprintf()

6.fseek()

7.ftell()

8.rewind

9.feof()

10.ferror()

開啟檔案或者建立並且開啟檔案

讀取或者寫入資料

關閉檔案

函式宣告:file * fopen(const char * path,const char * mode)

在呼叫fopen以後該函式會返回乙個file*型別的指標,指向該檔案(呼叫成功)。如果失敗則會返回null;

用法:fopen("目標檔案路徑.檔案型別","檔案使用方式");

如: 開啟檔案"test.dat"  ,寫下其目錄 "c:\\tc\\test.dat"

注意:如果將路徑寫成"c:\tc\test.dat"是不正確的, 這一點要特別注意。

file*fp = fopen("c:\\tc\\test.dat", "r");

fclose(fp);

檔案使用方式

含義如果指定檔案不存在

"r"(唯讀)

為了輸入資料,開啟乙個已經存在的文字檔案出錯

"w"(只寫)

為了寫入資料,開啟乙個文字檔案建立乙個新的文字檔案

"a"(追加)

文字檔案尾新增資料

出錯"rb"(唯讀)

為了讀取資料,開啟乙個二進位制檔案出錯

"wb"(只寫)

為了寫入資料,開啟乙個二進位制檔案建立乙個新的二進位制檔案

"ab"(追加)

向乙個二進位制檔案尾新增資料

出錯"r+"(讀寫)

為了讀和寫開啟乙個文字檔案出錯

"w+"(讀寫)

為了讀和寫打建立乙個新的文字檔案建立乙個新的文字檔案

」a+「(讀寫)

開啟乙個文字檔案,在文字檔案尾進行讀寫

建立乙個文字檔案

"rb+"(讀寫)

為了讀和寫,開啟乙個二進位制檔案出錯

"wb+"(讀寫)

為了讀和寫,建立乙個二進位制檔案建立乙個新二進位制檔案

"ab+"(讀寫)

開啟乙個二進位制檔案,在檔案尾進行讀和寫

建立乙個新二進位制檔案

注意:

用「w」開啟的檔案只能向該檔案寫入。 若開啟的檔案不存在,則以指定的檔名建立該檔案,若開啟的檔案已經存在,則將該檔案刪去,重建乙個新檔案。若要向乙個已存在的文字檔案追加新的資訊,只能用「a 」方式開啟檔案

把乙個文字檔案讀入記憶體時,要將ascii碼轉換成二進位製碼, 而把檔案以文字方式寫入磁碟時,也要把二進位製碼轉換成ascii碼,因此文字檔案的讀寫要花費較多的轉換時間。對二進位制檔案的讀寫不存在這種轉換

2. fclose()函式   fclose()函式用來關閉乙個由fopen()函式開啟的檔案 , 其呼叫格式為:   nt fclose(file *stream);  

當檔案關閉成功時, 返回0, 否則返回乙個非零值。

每當我們使用fopen()開啟乙個檔案 進行操作以後,必須要記得關閉檔案。

原型:size_t fwrite(const void *ptr, size_t size, size_t nmemb, file *stream)

ptr: -------------------------------  指向需要被寫入元素的位址

size_t :------------------------被寫入元素的單個元素大小(以位元組為單位)

nmemb--------------------------  被寫入的元素數量

stream-------------------------- 被寫入的檔案的檔案指標(file*型別)(輸出流)

② 返回值:該函式返回被寫入的元素數量,該物件是乙個整型資料型別。

寫入二進位制檔案

函式原型:size_t   fread(   void   *buffer,   size_t   size,   size_t   count,   file   *stream   )

buffer-----------  指向被寫入到的取元素的位址

size ------------- 被讀取的單個元素大小(以位元組為單位) 

count  ---------- 被讀取的元素數量 

strean --------   被讀取的檔案的檔案指標

返回值:返回讀取的元素個數

fread可以讀二進位制檔案,有時用字元方式去讀檔案不能讀完整個檔案,但是二進位制方式就可以 。這就是因為字元方式用特定的標記結尾的,讀取時只要碰到該標記就自動結束

函式原型:

int fprintf(file * stream,const char * format,...);
相信大家都會使用printf函式,這裡只需在函式呼叫最前面加上檔案指標,就可以像王螢幕輸出輸出資料那樣往檔案中寫入資料

如:

int a = 1;

int b = 2;

file*fp = fopen("text.txt", "w");

fprintf(fp, "hellow world:%d\nhellow world:%d", a, b);

這樣使用後得到如下結果

這個函式使用很單純,函式原型:

int fseek(file * stream,long int offset,int origin);
stream--------  輸入流(位址)

offset  --------  偏移量

origin  --------  起始位置

用法:簡單來說,就是以檔案stream的origin為起點,offset來設定當前檔案的讀寫位置

origin有三個選項

seek_set

檔案開頭

seek_cur

檔案指標的當前位置

seek_end

檔案結束*

offset可以為 正 負 和0

返回值:當前讀寫位置相對於起始(檔案開頭)位置的偏移量

使用方法:ftell(檔案指標);

函式原型:

void rewind(file * stream);
:將檔案讀寫位置移動到檔案起始位置

①如果檔案沒有結束返回0,結束了返回非零

1.對於檔案來說,無論是空檔案,還是存有資訊的檔案,當檔案被開啟,游標處於預設的開頭時,游標後都有資訊,這時候呼叫feof()來檢視游標後是否還有內容,就沒意義。

2.所以我們需要從相同中找不同,先使用getc(),從檔案中讀取乙個字元,讓游標向後移動乙個字元。這時空檔案的游標就已經移動到eof的後面,這時使用feof()就會返回1了。這才是feof()的正確用法。

3.但是要注意,一定要將游標回到檔案的開頭,因為之前判斷檔案是否為空時,將游標向前移動了一位,必須要將游標恢復到開頭,這樣才能保證檔案的正常讀取。

當我們讀取檔案時,有兩種情況會結束讀取,一種是檔案讀取完畢,一種是檔案讀取出錯。如果只用feof無法發區分這兩種情況,這時候我們就需要用到ferror()

②返回值:當檔案讀取出錯時返回非0,不出錯則返回0;

參考這位i博主

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...