2

stderr に出力し、コード内で putchar() を使用する C プログラムを作成しています。コンソールの出力にすべての stderr を表示し、最後にプログラムが終了する前に stdout をフラッシュする必要があります。putchar('\n') が発生したときに stdout のフラッシュを停止する方法を知っている人はいますか?

if ステートメントを実行して、改行が挿入されないようにすることもできると思いますが、プログラムの先頭にコードの行を配置して、fflush(stdout) と言うまですべてのフラッシュを停止することをお勧めします。プログラムの一番下

4

4 に答える 4

1

パイプリングを使用して、コンソールからコマンドを実行します。

my_command >output.txt

すべての出力stderrはすぐに表示されます。に書き込まれたものstdoutは に移動しoutput.txtます。

于 2013-10-25T16:15:33.153 に答える
0

setvbuf()出力を完全にバッファリングstdoutし、目的に十分な大きさのバッファ サイズを提供するために使用できます。

#include <stdio.h>

int main() {
    // issue this call before any output
    setvbuf(stdout, NULL, _IOFBF, 16384);
    ...
    return 0;
}

への出力stderrはデフォルトでバッファリングされていないため、すぐにコンソールに送られるはずです。への出力stdoutは、端末に接続されている場合、デフォルトでライン バッファリングされます。_IOFBF(完全にバッファリング) に設定するとputchar('\n')、保留中の出力がフラッシュされなくなります。

于 2020-11-26T11:16:49.297 に答える