C庫函數(shù) FILE *freopen(const char *filename, const char *mode, FILE *stream)關(guān)聯(lián)一個(gè)新的文件名與給定的打開流,同時(shí)關(guān)閉舊文件流。
以下是freopen()函數(shù)的聲明。
FILE *freopen(const char *filename, const char *mode, FILE *stream)
filename -- 這是C字符串,其中包含要打開的文件名。
mode -- 這是C字符串,其中包含文件訪問模式。它包括:
| mode | 描述 |
|---|---|
| "r" | 打開一個(gè)文件進(jìn)行讀取。該文件必須存在。 |
| "w" | 創(chuàng)建一個(gè)空的書面文件。如果已經(jīng)存在具有相同名稱的文件,其內(nèi)容被刪除的文件被認(rèn)為是一個(gè)新的空文件。 |
| "a" | 附加到文件中。寫入操作的數(shù)據(jù)追加在文件末尾的。該文件被創(chuàng)建,如果它不存在。 |
| "r+" | 打開更新文件閱讀和寫作。該文件必須存在。 |
| "w+" | 創(chuàng)建一個(gè)空文件,讀取和寫入。 |
| "a+" | 打開一個(gè)文件??讀取和追加。 |
stream -- 這是一個(gè)文件對象的指針標(biāo)識重新打開流。
如果該文件被重新打開成功,則函數(shù)返回一個(gè)指針,指向一個(gè)對象識別流,否則返回空指針。
下面的例子演示了如何使用freopen()函數(shù)。
#include <stdio.h> int main () { FILE *fp; printf("This text is redirected to stdout "); fp = freopen("file.txt", "w+", stdout); printf("This text is redirected to file.txt "); fclose(fp); return(0); }
讓我們編譯和運(yùn)行上面的程序,這將發(fā)送以下行標(biāo)準(zhǔn)輸出,因?yàn)樽畛跷覀儾]有打開的標(biāo)準(zhǔn)輸出:
This text is redirected to stdout
freopen()調(diào)用后,它關(guān)聯(lián)STDOUT文件file.txt,所以我們在STDOUT 寫進(jìn)入file.txt。因此,文件file.txt將有以下內(nèi)容。
This text is redirected to file.txt