2013-01-24 65 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

相关问题