想象一下,當我們寫了個程式,開始是在命令列下執行的程式,後來用mfc之類的改寫為窗體程式,原先用printf輸出的trace都不可見了,但是我們又需要(輸出到檔案分析),怎麼辦?
1、開始寫的時候你定義乙個mytrace的巨集;
2、你可以把printf換成fprintf;
3、使用輸出重定向。
第一種情況很方便,可程式已經寫出來了,顯然不大可能;
第二種情況可以是可以,但勞動量比較大;
第三種我覺得可以。
還記得不,在windows終端輸入 "dir > 1.txt",或在linux終端輸入"ls > 1.txt",即可實現把當前目錄的檔案列表匯出到"1.txt"中。這裡就用到了輸出重定向,很方便吧,我們也可以仿照這個去做。
這裡只是提供乙個思路,下面有幾段io重定向的示例**,有c的,python的,還有perl的(年終總結,三種語言都總結了,哈哈),僅供參考。
基於c的示例**:
1/*2file : redirect.c
3author : mike
4e-mail : [email protected]*/
6 #include
7 #include 89
void test_stdin()
10 21
22void test_stdout()
23 31
32int main()
33
基於python的示例**:
1#! /usr/bin/python
2import sys
3'''
4file : redirect.py
5author : mike
6e-mail : [email protected]
7'''
8print
"test stdout : "9
#redirect stdout
10 tmp = sys.stdout
11 fp = open("
1.txt
","w
")12 sys.stdout = fp
13print
'just a test
'14 sys.stdout = tmp #
recover stdout
15print
'test2
'16 fp.close()
1718
"test stdin : "19
#redirect stdin
20 tmp = sys.stdin
21 fp = open("
1.txt
","r
")22 sys.stdin = fp
23 strtest = raw_input()
24print strtest
25 sys.stdin = tmp #
recover stdin
26 strtest = raw_input()
27print strtest
28 fp.close()
基於perl的示例**:
1#! /usr/bin/perl
2 =cut
3 file : redirect.pl
4 author : mike
5 e-mail : [email protected]
6 =cut78
#redirect stdout
9print
"test stdout : \n
";10
open
log,"
> 2.txt
";11
select
log;
12print
"just a test\n
";13
#recover stdout
14select stdout;
15print
"just a test2\n
";16
close
log;
1718
#redirect stdin
19print
"test stdin : \n
";20
open log2,"
< 2.txt
";21
$line = ;
22print
$line;
23close log2;
24$line = ;
25print
$line;
好,就這些了,希望對你有幫助。
輸入輸出重定向
使用標準輸入流,標準輸出流和標準錯誤流,這些標準流都被預分配給鍵盤和顯示器。在需要的時候,可以使用重定向臨時改變這些預設分配。重定向是這樣一種過程,我們借助它指定乙個用於替代某個 標準檔案的檔案。輸入重定向 可以將標準輸入從鍵盤重定向到任何文字檔案。輸入重定向運算子為小於號 意味著該命令從此給 派的...
輸入輸出重定向
1.標準輸入的控制 語法 命令 檔案將檔案做為命令的輸入。例如 mail s mail test wesongzhou hotmail.com file1 將檔案file1 當做信件的內容,主 題名稱為mail test,送給收信人。2.標準輸出的控制 語法 命令 檔案將命令的執行結果送至指定的檔案...
輸入輸出重定向
想象一下,當我們寫了個程式,開始是在命令列下執行的程式,後來用mfc之類的改寫為窗體程式,原先用printf輸出的trace都不可見了,但是我們又需要 輸出到檔案分析 怎麼辦?1 開始寫的時候你定義乙個mytrace的巨集 2 你可以把printf換成fprintf 3 使用輸出重定向。第一種情況很...