乙個acm題目的解決背後隱藏著大量的測試,只有自己覺得把自己所能夠想到的一切可能都進行輸入測試並得到正確答案時才敢嘗試提交,畢竟在acm比賽中是會進行罰時的,寧可多測試幾次也不敢武斷提交。然而多數題目光測試資料就已經很多了,如果測試時一次一次手動輸入那將要耗費大量的時間,將要大大降低a題效率,這時候就體現出了函式freopen();的強大作用啦!
函式的宣告:file *freopen( const char *filename, const char *mode, file *stream );
filename:需要重定向到的檔名或檔案路徑。
mode:代表檔案訪問許可權的字串。例如,"r"表示「唯讀訪問」、"w"表示「只寫訪問」、"a"表示「追加寫入」。
stream:需要被重定向的檔案流,如標準輸出流檔案stdin/stdout/stderr,其中stdin是標準輸入流,預設為鍵盤;stdout是標準輸出流,預設為螢幕;stderr是標準錯誤流,一般把螢幕設為預設。通過呼叫freopen,就可以修改標準流檔案的預設值,實現重定向。。
freopen也有返回值,如果成功,則返回該指向該輸出流的檔案指標,否則返回為null,但不常用。
freopen()函式重定向了標準流,使其指向指定檔案。
下面給出經典樣例:
#includeusingnamespace
std;
intmain()
fclose(stdin);
fclose(stdout);
return0;
}
該**為從文字檔案in中讀入資料作為cin的輸入資料,將cout所要輸出的資料寫入到文字檔案out,最後需要使用fclose關閉流。
如果是讀(r)的話需要先已存在該文字,如果是寫(w)的話如果路徑下已有該文字,將會對文字先進行清空操作再寫入資料,如果沒有該檔案,將會在該程式儲存目錄下新建乙個該文字,也可在檔名前指定路徑如freopen("debug\\out.txt","w",stdout);只要路徑寫對,可以在該工程的任意資料夾下。
在比賽或者日常練習時如果遇到測試資料較多時可直接複製測試資料到讀的檔案中,修改是也可直接在文字檔案中修改,免去了大量的重複工作,十分方便高效。
第一次寫部落格,肯定有很多不足之處,希望可以慢慢改進,這是乙個開始!
重定向輸入輸出流 freopen
freopen是被包含於c標準庫標頭檔案中的乙個函式,用於重定向輸入輸出流。該函式可以在不改變 原貌的情況下改變輸入輸出環境。c99函式宣告 file freopen const char restrict filename,const char restrict mode,file restric...
使用freopen重定向輸入輸出流
在做acm演算法題目時,經常需要測試大量輸入資料。freopen函式可用於演算法本地除錯,等演算法執行正確後便可將 提交系統。freopen函式的主要功能是將預定義的標準流檔案定向到由path指定的檔案中。file freopen const char path,const char mode,fi...
輸入輸出重定向
使用標準輸入流,標準輸出流和標準錯誤流,這些標準流都被預分配給鍵盤和顯示器。在需要的時候,可以使用重定向臨時改變這些預設分配。重定向是這樣一種過程,我們借助它指定乙個用於替代某個 標準檔案的檔案。輸入重定向 可以將標準輸入從鍵盤重定向到任何文字檔案。輸入重定向運算子為小於號 意味著該命令從此給 派的...