printf的输出问题
写一段简单的代码
#include "stdio.h"
#include "unistd.h"
int main()
{
while(1)
{
printf(".");
fprintf(stderr, "*");
usleep(10000);//us
}
return 0;
}
输出跟我的理解差距很大,为啥我的printf没有一次输出呢?谁能给解释下吗?
输出:
C printf
****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
[解决办法]
printf中没有\n 没有刷新缓冲区的缘故吧
[解决办法]
应该是输出缓冲区吧,printf的内容会放置到输出缓冲区内,只有遇到缓冲区满,或强制刷新,或遇到'\n'才会把输出缓冲区内的内容打印在屏幕上。可以加个fflush();强制刷新输出缓冲区
[解决办法]
ISO C requires the following buffering characteristics.
Standard input and standard output are fully buffered, if and only if they do not refer to an interactive device.
Standard error is never fully buffered.
[解决办法]
输出缓冲区未刷新的缘故,可以用fflush强制刷新:
#include "stdio.h"
#include "unistd.h"
int main()
{
while(1)
{
printf(".");
fflush(stdout);
fprintf(stderr, "*");
fflush(stdout);
usleep(10000);//us
}
return 0;
}
[解决办法]
在每个最后不带\n的printf后面加fflush(stdout);