C 排序一个";“产出”;节目

C 排序一个";“产出”;节目,c,unix,sorting,output,C,Unix,Sorting,Output,假设我运行一个程序,它在运行过程中生成几个printf语句。当然,每次点击printf命令时,它都会打印。我该怎么做,而不是打印它,“存储”它,然后在程序结束时,取出所有应该打印的行,排序,然后打印它 e、 g 我想我必须在我的C程序中使用unix shell命令,比如 sort-k2n,2-k1,1 myprogram我能想到的一种方法是将标准输出重定向到文件 freopen( "file.txt", "w", stdout ); 然后使用-k2参数将文件馈送到sort,因为您希望在第二列

假设我运行一个程序,它在运行过程中生成几个printf语句。当然,每次点击printf命令时,它都会打印。我该怎么做,而不是打印它,“存储”它,然后在程序结束时,取出所有应该打印的行,排序,然后打印它

e、 g


我想我必须在我的C程序中使用unix shell命令,比如
sort-k2n,2-k1,1 myprogram
我能想到的一种方法是将
标准输出重定向到文件

freopen( "file.txt", "w", stdout );
然后使用
-k2
参数将文件馈送到
sort
,因为您希望在第二列(?)上排序

至于命令,请参阅此


它说明了基本原理。

您希望程序对自己的输出进行排序吗?有什么原因不能直接通过管道将输出进行排序吗?是的,这个^。您拥有在unix上执行此任务所需的所有工具。就用它吧。在程序中我该怎么做呢?我意识到我可以通过管道将输出进行排序,但我如何在程序中这样做,使其不必在以后键入命令您将程序包装在一个脚本中,该脚本有一个命令行,如
myProgram arg1 file[file…n]|sort
。祝你好运。是的,我认为@iccthedral said是更好的方法,通常我正在做的是./program 2>&1 | tee prgm.log,这样你可以在运行时查看程序的o/p,同时它也会将所有o/p重定向到日志文件,以后你可以根据需要使用grep日志文件!
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"
freopen( "file.txt", "w", stdout );