2012-11-23 46 views
4

我想知道是否有任何方法將我的程序的結果存儲到文本文件中。我知道你可以做類似./a.out> output.txt的東西,但是對於我的程序,在我鍵入./a.out之後,我再次提示TIME:在那裏放入時間量,然後點擊輸入算法執行並輸出結果。如何將./a.out的結果存儲到文本文件

程序輸出一段時間的階段,基本上我的輸出是這樣的:

time 0:00 stage 1 

time 0:05 stage 1 

... 

time 2:05 stage 2 

我如何能獲取存儲到一個文本文件的輸出?

+0

實際上**調用你的程序二進制'a.out' **是一個非常**的壞習慣。你可以用'gcc -Wall -g single.c -o singleprog'編譯一個單文件源文件'single.c',然後運行'。/ singleprog'(當然,使用更合適的名字)。對於許多源文件程序,學習使用'make'或其他構建器。 –

回答

5

所以重定向輸入,以及:

./a.out <input.txt> output.txt

input.txt包含的時間量。

+0

thx這工作。 –

1

一種解決方案是將TIME參數作爲參數傳遞,並使用./a.out time> output.txt將其輸出到文件中。

+0

thx。我使用sudo_O的方法,但我也會嘗試這種方法。你們搖滾。我給了你一個:) –

2

一種方式做到這一點是將結果打印到stderr

fprintf(stderr, "time %d:...."); 

,並重定向到stderroutput.txt

./myprog 2> output.txt 

注:這是,如果你不希望打開一個解決方法文件,我不喜歡使用stderr以外的任何錯誤。

+0

@sudo_O是在閱讀輸入後,我們將輸出打印到'stderr'並重新定向,你的方式要求用戶首先將所有輸入寫入文件 – iabdalkader

+0

我們中的一個在這裏丟失了什麼?在你的情況下,用戶每次仍會被提示輸入? –

+0

@sudo_O是的,這就是我需要的第一個地方 – iabdalkader

0

最簡單的方法是什麼sudo_O告訴你,(它在每個操作系統)

./a.out <in.txt >out.txt. 

如果你想這樣做,在C,使用freopen函數()(http://www.cplusplus.com/reference/clibrary/cstdio/freopen/

freopen ("myoutput.txt","w",stdout); 
freopen ("myinput.txt","r",stdin); 

這將stdout重定向到myoutput.txt,因此所有printfs都會轉到「myoutput.txt」。 也將stdin重定向到myinput.txt,因此所有scanfs都從「myinput.txt」中讀取。

相關問題