2016-08-27 6 views
0

私はプログラミングをCで学んでいます。ここに何も印刷されない理由を説明できますか?前もって感謝します。多くのシステムprintf"printf"はなぜ機能しないのですか?

#include <stdio.h> 

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

は、文字列またはフォーマットに "\ n" を追加を参照してください。 - >> 'printf("%s \ n "、a);' – wildplasser

+0

なぜ印刷されませんか? –

+0

'fflush(stdout);' 'printf'の後に –

答えて

7

もし出力が代わりにすぐに印刷されたバッファに置かれるprintfを呼び出すすなわちとき、バッファリングされます。改行を印刷すると、バッファはフラッシュされます(別名出力が印刷されます)\n

プログラムが終了したときにバッファがフラッシュされるので、すべてのシステムで、プログラムは、\nがなくても印刷されます。すぐに出力を得るための別の方法は、バッファをフラッシュするfflushを呼び出すことです

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

通常、あなたはまだのよう\nを追加します。 manページから:出力ストリームの場合

、fflushは()ストリームの 基礎となる書き込み機能を経由して与えられた出力または更新ストリームのためのすべてのユーザ空間 バッファされたデータの書き込みを強制します。

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

EDIT

@Barmarが指摘して@Alterマンによって引用されたとして、プログラムの終了時にバッファがフラッシュされることが必要です。 @Alterマンから

引用:

主な機能は、プログラムの終了前に(したがって、すべての出力ストリームがフラッシュされる)元の呼び出し側に返す、またはexit関数が呼び出された場合、開いているすべてのファイルが閉じている場合。

calling main() in main() in c

+1

Cシステムは**プログラムが終了したら出力をフラッシュするために**必要です**。 – Barmar

+0

@Barmar、良い点:_メイン関数が元の呼び出し元に戻る場合、またはexit関数が呼び出されると、プログラム終了前にすべての開いているファイルが閉じられます(したがって、すべての出力ストリームがフラッシュされます)。しかし、この場合、 'exit()'や 'return'を呼び出すと、これが問題を引き起こしている可能性がありますか? –

+0

@AlterMann関数の最後を実行すると、関数は呼び出し元に戻ります。 – Barmar

関連する問題