как сделать паузу oop на несколько секунд? - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь сделать паузу каждый раз, когда он сделал 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 
    }
}

1 Ответ

1 голос
/ 17 января 2020

Я пытался запустить ваш код на каком-то онлайн-компиляторе https://www.onlinegdb.com/online_c++_compiler

Я не предполагаю, что с вашим кодом все в порядке, возможно проблемы с компилятором.

Если он все еще не работает не работает, возможно, есть проблема с вашим буфером.

Иногда символы не печатаются до тех пор, пока не будет превышен какой-либо буфер или не будет напечатана новая строка. Есть два способа сделать это

  1. . Использовать вызов fflush(stdout) перед методом sleep для очистки sh из буфера
  2. Лучший способ использовать C ++ cout библиотека как библиотека автоматически sh для вас
...