我试图在他每次处理完1个案件时都暂停一下。但是我将sleep(1)放在哪里都没有关系,它将休眠5秒钟,然后立即给出所有输出。或者当我要10个输出时,它将等待10秒钟再给我输出。
我想要的是在下一个输出之间获得1秒的输出,依此类推。这是我的代码,我已将其做得尽可能小,因此不会花太多时间阅读。我试图将sleep(1)放在几乎每个地方,但结果都一样。
//include list
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
// variable list
int i = 0;
int StopNow;
int start = 0;
int main(void)
{
srand(time(0));
while(i<5)
{
switch(rand() % 4 + 1) // picking a random number between 1 and 4.
{
case 1:
printf("\n 1");
break;
case 2:
printf("\n 2");
break;
case 3:
printf("\n 3");
break;
case 4:
printf("\n 4");
break;
}
i++;
sleep(1); // Pause
}
}
我试图在某些在线编译器上运行您的代码https://www.onlinegdb.com/online_c++_compiler
我认为您的代码没有问题,可能是编译器问题。
如果仍然无法使用,则可能是您的缓冲区存在问题。
有时,直到超过某些缓冲区或打印换行符后,字符才会被打印。您可以通过2种方法尝试此操作
fflush(stdout)
方法之前使用sleep
调用来清空缓冲区cout
库的更好方法,因为该库会自动为您刷新