我的代码是:
#include <stdio.h>
void main( int argc, char** argv) {
printf("%s", argv[0]);
system("pwd");
}
输出结果为:
[river@localhost studio]$ ./a.out
/home/river/Desktop/studio
./a.out[river@localhost studio]$
似乎首先打印系统(“pwd”),然后打印argv [0]。为什么? 如果我添加如下语句:
#include <stdio.h>
void main( int argc, char** argv) {
printf("%s", argv[0]);
fflush(stdout);
system("pwd");
}
输出结果为:
[river@localhost studio]$ ./a.out
./a.out/home/river/Desktop/studio
它正常工作,为什么?
答案 0 :(得分:2)
printf
调用仅将输出放在缓冲区中。要实际写入缓冲区,需要刷新。打印换行符时会自动刷新输出,因此如果您将printf
中的格式字符串替换为:"%s\n"
,则无需调用fflush
即可生效。
答案 1 :(得分:1)