2013-10-25 45 views
0

我正在写一个C程序,我正在打印到stderr并在代码中使用putchar()。我希望控制台上的输出显示所有的stderr,然后在程序结束之前最终刷新标准输出。有没有人知道一种方法,当putchar('\ n')发生时,会停止刷新stdout?C停止冲洗stdout

我想我可以只是做一个if语句来确保它没有putchar任何换行符,但我更喜欢一些行或代码放在程序的顶部停止所有的冲洗,直到我说fflush(标准输出)在程序

+3

为什么不写入缓冲区,然后将其写入标准输出,然后将其显示在要显示的位置? – simonc

+0

你正在使用哪个操作系统? – alk

回答

1

的底部使用pipeling从控制台运行命令:

my_command >output.txt 

所有输出维滕到stderr会立即出现。写入stdout的内容将会变为output.txt

2

你想要做的事是可怕的脆弱。 C在任何情况下都没有义务执行stdio 不输出输出。即使你让它为你工作,这种行为将取决于不超过缓冲区大小。如果你真的需要这种行为,你可能应该自己缓冲输出(可能写入tmpfile()而不是stdout),然后将其全部复制到stdout作为退出程序之前的最后一步。