C語言檔案操作-1-
讀寫檔案操作與普通的printf、scanf
程式碼 | 操作平臺 | 功能 |
---|---|---|
printf | 螢幕 | 標準輸出 |
scanf | 鍵盤 | 標準輸入 |
perror | 螢幕 | 標準輸出錯誤 |
系統檔案
功能 | 程式碼 | 巨集定義 |
---|---|---|
標準輸入 | stdin | 0 |
標準輸出 | stdout | 1 |
標準錯誤 | stderr | 2 |
系統檔案在應用程式執行時會自動開啟,結束時系統自動關閉(隱式回收)
檔案指標和普通指標的相同和區別:
定義方式:
採用了系統特定的結構體FILE來處理。
FILE *fp = NULL;
操作檔案方式:
開闢指標
藉助檔案操作函式來改變fp為空和野指標。
fopen();
//函式相當於C裡面的malloc函式來開闢空間
操作檔案:
使用檔案讀寫來完成
fput,fputs,fgetc,fgets,fread,fwrite函式等
檔案分類:
裝置檔案:
螢幕,顯示卡,鍵盤,磁碟等
磁碟檔案:
文字檔案:
由ASCII碼寫成
二進位制檔案:
由bin二進位制編碼完成
檔案操作的一般步驟:
-
開啟檔案 fopen()函式
-
讀寫檔案:fputc,fputs等函式
-
關閉檔案:fclose()函式
開啟、關閉檔案函式
//fopen函式原型
FILE *fopen(const char *filename,const char *mode);
引數1 const char *filename的filename
表示的是檔案訪問路徑,可以是絕對路徑也可以是相對路徑
引數2 const char* mode
檔案開啟許可權
引數 | 操作 |
---|---|
r | 只讀方式開啟檔案,不存在則報錯 |
w | 只寫方式開啟檔案,如果檔案存在就直接覆蓋檔案重新寫,如果不存在則建立檔案再寫 |
w+ | 寫、讀方式開啟檔案,如果檔案存在則覆蓋檔案重新寫,如果不存在就建立檔案再寫 |
r+ | 讀、寫方式開啟檔案,如果檔案不存在則失敗 |
a | 以再檔案以後的內容後面追加來開啟檔案 |
b | 以二進位制形式開啟檔案 |
可以複合則使用如(ab)
fopen函式開啟成功則返回檔案的檔案指標,失敗則返回NULL
檔案訪問路徑:
絕對路徑:
從磁碟的根目錄開始描寫 如:C:/User/test.txt
書寫方法:
情況 | 書寫方法 |
---|---|
Windows下特有 | C:\\user\\test.txt |
Windows和linux通用 | C:/User/test.txt |
相對路徑:
針對於啟動項的環境。
如果是使用xxx.exe來執行,就是相對於xxx.exe的檔案路徑
如果是用VS環境下,就值在.vcxproj所在目錄的檔案路徑
具體操作函式:
檔案結束標記:
也就是會返回一個EOF,在巨集定義上EOF也就是-1的意思,可以通過fp和EOF來判斷檔案是否讀取到結束。
按字元寫檔案fputc:
//函式原型
int fgetc(FILE *stream)
引數
FILE *stream
stream也就是帶讀取的檔案的fp(指標)
返回值
成功:就是讀到對應字元的ASCII碼
失敗:返回-1
實現demo:
https://www.cnblogs.com/beautiful7/p/13915853.html
feof()函式
//函式原型
int feof(FILE *stream);
引數:
FILE *stream
返回值:
返回條件 | 返回值 |
---|---|
到達檔案末尾 | 真(非0值) |
沒有到達檔案末尾 | 假(0值) |
作用:
用來判斷是否到達檔案末尾,對於二進位制檔案和字元檔案都OK
特徵:
呼叫feof函式來判斷,必須使用正確的呼叫指標來處理。
fgets()函式
作用:
獲取一個字串,用\n來作為結尾標記,自動在最後新增'\0',如果空間夠大就會把\n也讀入,如果不夠就捨棄\n,但是\0必有
//函式原型
char *fgets(char *str,int size,FILE *stream);
引數:
引數 | 作用 |
---|---|
char *str | 表示需要提取到的字串首地址 |
int size | 表示需要提取的空間大小 |
FILE *stream | 表示檔案指標 |
返回值:
成功:返回讀取到的字串
失敗:返回NULL
實現demo:
https://www.cnblogs.com/beautiful7/p/13915880.html
fputs()函式
功能:
寫入一個字串,如果字串中沒有\n就不會寫\n
//函式原型
int fputs(const char *str,FILE *stream);
引數
引數 | |
---|---|
const char *str | 字串首地址 |
FILE *stream | 檔案指標 |