先讓我們來一起數一下常見的檔案io操作有哪些吧~
fopen 開啟檔案、fclose 關閉檔案、fread 從檔案中讀取、fwrite 向檔案中寫入、fprintf 格式化標準寫入
fseek 移動跳轉指定讀取或者寫入位置
//開啟
file *fopen(const
char *path, const
char *mode);
//引數1:檔案路徑預設是當前路徑,引數2:檔案訪問許可權字串我們一會詳細解讀
file *fdopen(int fd, const
char *mode);
//引數1:檔案識別符號什麼是檔案識別符號我們後續詳細解讀,引數2:檔案訪問許可權字串
file *freopen(const
char *path, const
char *mode, file *stream);
//引數1:路徑,引數2:檔案訪問許可權字串,引數3:需要被重定向的檔案流
//關閉
fclose(file*fp);
檔案訪問許可權字串
r :以唯讀方式開啟已經存在的檔案,如果不存在則開啟失敗
r+ :以讀寫開啟已經存在的檔案,如果不存在則開啟失敗
w :以只寫開啟檔案,若檔案不存在則建立,建立的檔案許可權一般預設為664,若已存在則把檔案長度截斷為0,就是把檔案原有內容全部都丟了,恢復為剛建立時狀態
w+:以讀寫開啟檔案,檔案不存在則建立,存在則檔案長度截斷為0
a :追加模式開啟檔案,以只寫方式開啟,從檔案末尾開始寫入資料
a+ : 讀寫追加,當開啟的時候游標在起始位置,當寫的時候,位置移動到檔案末尾,讀從檔案起始位置開始讀。
注意:當我們在w+格式時,可能出現有資料卻,讀不到資料的情況,有可能是當前已經在檔案末尾了,可以用int feof(file *stream);
判斷是否在檔案最後。
int fseek(file *stream, long offset, int whence);
//stream檔案游標將指向以fromwhere位置為基準,偏移offset個位元組的位置,成功函式返回0。
一般基準位置有:
檔案頭0(seek_set),
當前位置1(seek_cur),
檔案尾2(seek_end)
//寫入
fwirte(const
void *ptr,size_t size,size_t nmemb,file *stream);
//ptr要寫入資料的指標,size要讀的每個資料項的位元組數,單位是位元組,nmenb
要讀取幾個資料項寫入,每個資料項size個位元組,寫入到stream檔案
//讀取
size_t fread(void *ptr, size_t size, size_t nmemb, file *stream);
//和寫入類似,從檔案stream中讀取nmemb個資料塊,每塊大小size,放如ptr指標指向的記憶體空間中
//標準化寫入
intfprintf(file *stream, const
char *format, ...);
//printf系列都採用可變引數,來傳參
什麼是可變引數列表,請看我另一篇博文可變引數列表剖析
下面在舉乙個例子:
1
#include
2#include
3#include
4int main()
5 13 fwrite("hello world!\n",11,1,fp);
14fprintf(fp,"hehehehe\n");
15 fseek(fp,0,seek_set);
16char buff[1024]=;
17 fread(buff,20,1,fp);
18printf("%s\n",buff);
19 fclose(fp);
20return
0; 21 }
檔案的操作 標準IO庫
fopen 開啟或建立檔案 fread 讀取檔案的資料 fwrite 向檔案寫入資料 fgetc 從檔案中讀乙個字元 fputc 向檔案中寫乙個字元 fscanf 從乙個流中進行格式化輸入 fprintf 格式化輸出乙個流 fseek 定位 getcwd 獲取路徑 fopen原形 file fope...
C 標準庫 IO 操作
c 通過以下幾個類支援檔案的輸入輸出 開啟檔案 open a file 對這些類的乙個物件所做的第乙個操作通常就是將它和乙個真正的檔案聯絡起來,也就是說開啟乙個檔案。被開啟的檔案在程式中由乙個流物件 stream object 來表示 這些類的乙個例項 而對這個流物件所做的任何輸入輸出操作實際就是對...
C語言檔案IO操作(標準IO)
函式 file fopen const char path,const char mode 引數1 將要開啟的檔案路徑 引數2 開啟檔案的方式 1.r 唯讀的方式開啟 2.w 若檔案不存在則建立檔案,若存在此檔案則清空檔案內容並打卡 3.a 若檔案不存在則建立檔案,若存在則在末尾追加 不會清空原檔案...