1. ホーム
  2. c

[解決済み] なぜ "printf "は何も出力されないのですか?

2022-02-03 15:22:11

質問

でのプログラミングを学んでいます。 C . なぜここに何も表示されないのか説明してください。

#include <stdio.h>

int main (void)
{
    char a[]="abcde";
    printf ("%s", a);
}

解決方法は?

多くのシステムで printf を呼び出すと、バッファリングされます。 printf の場合、出力はすぐに印刷されるのではなく、バッファに格納されます。バッファは、改行を出力したときにフラッシュされます (つまり、出力が印刷されます)。 \n .

どのシステムでも、このプログラムは \n プログラムの終了時にバッファがフラッシュされるためです。

一般的には、まだ \n のようにします。

printf ("%s\n", a);

すぐに出力を得るための別の方法としては fflush を使用してバッファをフラッシュします。manページより。

出力ストリームの場合、fflush() は、すべてのユーザースペース 与えられた出力ストリームまたは更新ストリームのバッファリングされたデータを、ストリームの のような書き込み関数があります。

出典 http://man7.org/linux/man-pages/man3/fflush.3.html

EDIT

Barmar さんの指摘と @Alter Mann さんの引用にあるように、プログラム終了時にバッファをフラッシュすることが要求されます。

引用元: @Alter Mannさん

<ブロッククオート

main関数が元の呼び出し元に戻るか、exit関数が呼び出されると、プログラムが終了する前に、開いているすべてのファイルが閉じられます(したがって、すべての出力ストリームがフラッシュされます)。

参照 cでmain()を呼び出す。