sleep()过早地拖延我的程序.我究竟做错了什么?

bas*_*ibe 4 c sleep stdout flush

我想写一个应该打印类似的小程序

测试CPU ...完成
测试RAM ...完成

等等.

我用C编写了以下程序:

printf( "testing RAM...\t\t" );
sleep( sleep_time );
printf( "done\n\n" );

printf( "testing HDD...\t\t" );
sleep( sleep_time );
printf( "done\n\n" );
Run Code Online (Sandbox Code Playgroud)

哪里sleep_time是2.

然而,不是首先打印"测试CPU ...",然后等待,然后打印"完成",它首先等待,然后打印整行,这不是我想到的.

我想这与编译器的自动优化有关.
无论如何,我该怎么做才能获得所需的输出?

我在OSX 10.5.6上使用XCode 3.1

谢谢您,
巴斯蒂安

Joh*_*itb 21

问题是您的打印是缓冲的.在睡觉前,请拨打fflush(stdout); 刷新缓冲区