当我运行以下程序时,system("ls -l")
的输出显示在printf
之前。为什么会这样?
#include<stdio.h>
int main()
{
printf("\nHello world");
system("ls -l"); // output of this statement is displayed before that of the preceding
// printf statement
return 0;
}
感谢。
答案 0 :(得分:5)
printf
已缓冲。 AFAIK缓冲区仅在存在\n
或明确刷新它时(通过fflush(3)
)写入输出。
所以会发生什么,printf
将\n
写入输出,然后缓冲字符串的其余部分。然后执行ls -l
,当程序完成时,缓冲区会自动刷新。