2013-01-24 63 views
0

假設我運行了一個程序,該程序在其運行過程中生成了多個printf語句。當然,每次打印printf命令時都會打印。我將如何去做,而不是打印它,「存儲」它,然後在程序結束時,採取應該打印的所有行,對其進行分類然後打印。對程序的「輸出」進行排序

例如

Run Program 
prints "File1 90" 
prints "File2 30" 
prints "File3 40" 
End Program 

Run Program 
prints "File1 90" (don't actually print it out) 
prints "File2 30" (don't actually print it out) 
prints "File3 40" (don't actually print it out) 
Take print statements and rearrange them by numerical order, then print 
Program prints: 
prints "File2 30" 
prints "File3 40" 
prints "File1 90" 

我想我有我的C程序中使用UNIX shell命令如 sort -k2n,2 -k1,1 myprogram

+5

您是否希望*程序*對自己的輸出進行排序?有沒有什麼理由不能通過'sort'來輸出輸出? – templatetypedef

+0

是的,這^。您擁有UNIX上所需的所有工具。只要使用它。 – nullpotent

+0

我該如何在程序中做到這一點? 我知道我可以通過排序來輸出輸出,但是我怎麼能在程序中這樣做,所以它不是我必須輸入的命令, –

回答

1

的一種方式,我能想到的是重定向stdout到文件

freopen("file.txt", "w", stdout); 

然後將文件送入sort-k 2自變量,因爲你想排序第二列(?)

而至於命令/ s請參閱此example

它說明了基本知識。

+0

是的,我認爲@iccthedral說是更好的方法,通常我正在做的是**。/ program 2>&1 | tee prgm.log **,因此您可以在運行時查看程序的o/p,同時它也會將所有o/p重定向到日誌文件,之後您可以使用as grep **日誌文件根據您的要求! – Arun

相關問題