標籤:after 函數 color fopen 使用 關聯 清除 類型 file
開啟/關閉/重新整理流
1. fopen() 開啟流
功能:
1)fopen()開啟由 path指定的一個檔案。
2)fdopen()擷取一個先有的檔案描述符,並使一個標準的I/O流與該描述相結合。此函數常用於由建立管道和網路通訊函數小所返回的描述符。因為這些特殊類型的檔案不能用標準I/O fopen函數開啟,我們必須先調用裝置專用函數以獲得一個檔案描述符,然後用fopen使一個標準I/O流與該描述符相關聯。
3)fropen()在一個指定的流上開啟一個指定的檔案,如若該流已經開啟,則先關閉該流。若流已經定向,這fopen清除該定向。吃函數一般用於將一個指定的檔案代開為一個預定流,如:標準輸入、標準輸出和標準錯誤。
所需標頭檔:<stdio.h>
函數原型:
FILE *fopen(const char *path, const char *mode);
FILE *freopen(const char *path, const char *mode, FILE *stream);
FILE *fdopen(int fd, char *mode);
參數:
fopen: path 將要的開啟的指定檔案的絕對路徑; mode 檔案開啟的方式。
freopen: path 要重新導向的檔案絕對路徑,mode 檔案開啟檔案, stream 已經開啟的流。
fdopen:fd 已經開啟的檔案描述符, mode 檔案開啟檔案。
傳回值:
成功:流指標 失敗:NULL
參數mode:
r,rb:以唯讀方式開啟檔案,檔案必須已經存在
對應檔案I/O:open(path, O_RDONLY);
r+,rb+:以讀寫方式開啟檔案,檔案必須存在
w,wb:以唯寫方式開啟檔案,若檔案存在,則將該檔案內容清空;若檔案不存在,則建立檔案。
w+,wb+:以讀寫方式開啟檔案,若檔案存在,則將該檔案內容清空;若檔案不存在,則建立檔案。
a,ab:以追加方式唯寫開啟檔案,若檔案不存在,則建立檔案;若檔案存在,寫入的資料會被追加到檔案末尾,檔案原先的內容保留。
a+,ab+:以追加方式可讀寫開啟檔案,若檔案不存在,則建立檔案;若檔案存在,寫入的資料會被追加到檔案末尾,檔案原先的內容保留。
frepen()重新導向使用樣本
1 #include <stdio.h> 2 int main(int argc, char *argv[]) 3 { 4 FILE *fp; 5 if (argc < 2) 6 { 7 fprintf("Usage:%s filename\n", argv[0]); 8 return -1; 9 }10 freopen(argv[1], "w", stdout); //將標準輸入重新導向為argv[1]所指定的檔案。11 fprintf("after freopen!\n");12 return 0;13 }14 輸出結果將在argv[1]指定的檔案中
2. fclose()關閉流
功能:關閉一個檔案流
所需標頭檔 <stdio.h>
函數原型:
int fclose(FILE *fp);
參數:
fp :要關閉的流。
傳回值:
調用成功返回0;失敗返回EOF並設定errno
值得注意的是,fclose()在關閉流之前,會先將緩衝區裡的資料輸出,如果標準I/O庫已經為該流分配了一個緩衝區,則釋放緩衝區。
當一個進程正常終止時(直接調用exit()函數<_exit()終止的進程不會重新整理流>,或從main函數返回),則所有帶有未寫快取資料的標準I/O都會被重新整理,所有代課的標準I/O都被關閉。
3. 重新整理流
功能:強制重新整理一個流。此函數使該流所有未寫的資料都被傳遞到核心。
函數原型:
int fflush(FILE *fp);
參數:
fp:要重新整理的流。
fopen(),fclose() 開啟/關閉檔案