freopen 妙用,輸入輸出重定義

2021-07-11 08:32:23 字數 2452 閱讀 5645

使用的理由(範圍):如果輸入資料很龐大,需要一次又一次的重新輸入和除錯時可採用本函式。

用freopen

,就可以修改標準流檔案的預設值,實現重定向。

file * freopen ( const char * filename, const char * mode, file * stream );

filename: 要開啟的檔名

mode: 檔案開啟的模式,和

fopen

中的模式

(r/w)相同

stream: 檔案指標,通常使用標準流檔案

(stdin/stdout/stderr)

返回值:成功,則返回乙個path

所指定檔案的指標;失敗,返回

null

。(一般可以不使用它的返回值) 

功能:實現重定向,把預定義的標準流檔案定向到由path

指定的檔案中。標準流檔案具體是指

stdin

、stdout

和stderr

。其中stdin

是標準輸入流,預設為鍵盤;

stdout

是標準輸出流,預設為螢幕;

stderr

是標準錯誤流,一般把螢幕設為預設。通過調

因為檔案指標使用的是標準流檔案,因此我們可以不定義檔案指標。

接下來我們使用freopen()

函式以唯讀方式

r(read)

開啟輸入檔案

slyar.in

freopen("slyar.in", "r", stdin);

然後使用freopen()

函式以寫入方式

w(write)

開啟輸出檔案

slyar.out

freopen("slyar.out", "w", stdout);
接下來的事情就是使用freopen()

函式的優點了,我們不再需要修改

scanf

和printf

,而是維持**的原樣就可以了。因為

freopen()

函式重定向了標準流,使其指向前面指定的檔案。

最後只要使用fclose

關閉輸入檔案和輸出檔案即可。

fclose(stdin);

fclose(stdout);

若要恢復控制代碼,可以重新開啟標準控制台裝置檔案,只是這個裝置檔案的名字是與作業系統相關的。

dos/windows:

freopen("con", "r", stdin);

linux:

freopen("/dev/console", "r", stdin);

輸入一些整數,求出它們的最小值、最大值和平均值(保留3

位小數)。輸入保證這些數都是不超過

1000

的整數。

樣例輸入:2 8 3 5 1 7 3 6

樣例輸出:1 8 4.375

#define test

#include

#define mm 1000

main()

printf("%d %d %.3lf\n",min,max,(double)sum/i);

}

說明:(1

)對於本題來說,我們使用了重定向簡單地說,就是程式中用標準輸入

scanf()

函式輸入的資料從

d:\c2_4_in.txt

中讀取,

printf()

函式輸出的資料直接寫入

d:\c2_4_out.txt

中去,螢幕上不在等待輸入資料和不再顯示輸出結果。

(2)如果把第一句去掉(

#define test

),

#ifdef test

freopen("d:\\c2_4_in.txt","r",stdin);

freopen("d:\\c2_4_out.txt","w",stdout);

#endif

就不起任何作用,這時還必須用標準輸入輸出。

#include

#define mm 1000

main()

fprintf(fout,"%d %d %.3lf",min,max,(double)sum/i);

fclose(fin);

fclose(fout);

}

以上程式在vc6.0環境測試通過。

用freopen

,就可以修改標準流檔案的預設值,實現重定向。

C語言中輸入輸出重定,freopen 妙用

使用的理由 範圍 如果輸入資料很龐大,需要一次又一次的重新輸入和除錯時可採用本函式。freopen 函式 1.格式 file freopen const char filename const char mode file stream 2.引數說明 filename 要開啟的檔名 mode 檔案開...

C語言中輸入輸出重定,freopen 妙用

使用的理由 範圍 如果輸入資料很龐大,需要一次又一次的重新輸入和除錯時可採用本函式。freopen 函式 1.格式 file freopen const char filename const char mode file stream 2.引數說明 filename 要開啟的檔名 mode 檔案開...

重定向輸入輸出流 freopen

freopen是被包含於c標準庫標頭檔案中的乙個函式,用於重定向輸入輸出流。該函式可以在不改變 原貌的情況下改變輸入輸出環境。c99函式宣告 file freopen const char restrict filename,const char restrict mode,file restric...