如何暂停循环几秒钟?

问题描述 投票:0回答:1

我试图在他每次处理完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 
    }
}
c++ loops switch-statement sleep pause
1个回答
0
投票

我试图在某些在线编译器上运行您的代码https://www.onlinegdb.com/online_c++_compiler

我认为您的代码没有问题,可能是编译器问题。

如果仍然无法使用,则可能是您的缓冲区存在问题。

有时,直到超过某些缓冲区或打印换行符后,字符才会被打印。您可以通过2种方法尝试此操作

  1. fflush(stdout)方法之前使用sleep调用来清空缓冲区
  2. 使用C ++ cout库的更好方法,因为该库会自动为您刷新
© www.soinside.com 2019 - 2024. All rights reserved.