私のコードは次のとおりスクリーン印刷が紛らわしいですか?
#include <stdio.h>
void main(int argc, char** argv) {
printf("%s", argv[0]);
system("pwd");
}
出力である:
[[email protected] studio]$ ./a.out
/home/river/Desktop/studio
./a.out[[email protected] studio]$
それは次に[0] argvの印刷、最初にそのシステム( "PWD")プリントです。どうして?私は、次のようなステートメントを追加する場合 :
#include <stdio.h>
void main(int argc, char** argv) {
printf("%s", argv[0]);
fflush(stdout);
system("pwd");
}
出力は次のようになります。
[[email protected] studio]$ ./a.out
./a.out/home/river/Desktop/studio
それは正常に動作し、なぜですか?
...と出力ストリームをフラッシュしたり、出力ストリームを使用しない "システム" を呼び出します - "system"によって呼び出されたコマンドは直接コンソールに直接書き込みます。そして、プログラムが終了するとバッファがフラッシュされ、あなたが印刷した行が表示されます。 –