使用的理由(範圍):如果輸入資料很龐大,需要一次又一次的重新輸入和除錯時可採用本函式。
freopen ()函式:
1.格式
file
*freopen
(const
char
*filename
,const
char
*mode
,file
*stream );
2.引數說明
filename: 要開啟的檔名
mode: 檔案開啟的模式,和
fopen
中的模式
(r/w)相同
stream: 檔案指標,通常使用標準流檔案
(stdin/stdout/stderr)
返回值:成功,則返回乙個path
所指定檔案的指標;失敗,返回
null
。(一般可以不使用它的返回值)
功能:實現重定向,把預定義的標準流檔案定向到由path
指定的檔案中。標準流檔案具體是指
stdin
、stdout
和stderr
。其中stdin
是標準輸入流,預設為鍵盤;
stdout
是標準輸出流,預設為螢幕;
stderr
是標準錯誤流,一般把螢幕設為預設。通過呼叫
freopen
,就可以修改標準流檔案的預設值,實現重定向。
3.使用方法
因為檔案指標使用的是標準流檔案,因此我們可以不定義檔案指標。
接下來我們使用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/wi
ndows:
freopen
("con"
,"r"
,stdin);
linux:
freopen
("/dev/console"
,"r"
,stdin);
4.演算法實例
輸入一些整數,求出它們的最小值、最大值和平均值(保留3
位小數)。輸入保證這些數都是不超過
1000
的整數。
樣例輸入:2 8 3 5 1 7 3 6
樣例輸出:1 8 4.375
參考程式1:
#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
就不起任何作用,這時還必須用標準輸入輸出。
參考程式2:
#include
#define mm 1000
main()
fprintf(fout,"%d %d %.3lf",min,max,(double)sum/i);
fclose(fin);
fclose(fout);}
以上程式在vc6.0環境測試通過。
C語言中輸入輸出重定,freopen 妙用
使用的理由 範圍 如果輸入資料很龐大,需要一次又一次的重新輸入和除錯時可採用本函式。freopen 函式 1.格式 file freopen const char filename const char mode file stream 2.引數說明 filename 要開啟的檔名 mode 檔案開...
c語言中的輸入輸出(一)
是轉義字元,以上這類符號用於格式輸入與格式輸出,就是我們常見的printf和scanf函式中。在輸入輸出時,對不同型別的資料 如int,float,char等 要使用不同的格式說明。d 按照十進位制整數形式輸入 出 帶符號整數,正數不輸出符號 o 按照八進位制輸入 出無符號整數 x 按照十六進製制輸...
Shell教程十一 Shell 輸入 輸出重定向
大多數 unix 系統命令從你的終端接受輸入並將所產生的輸出傳送回 到您的終端。乙個命令通常從乙個叫標準輸入的地方讀取輸入,預設情況下,這恰好是你的終端。同樣,乙個命令通常將其輸出寫入到標準輸出,預設情況下,這也是你的終端。重定向命令列表如下 命令說明 command file 將輸出重定向到 fi...