Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将循环暂停几秒钟?_C++_Loops_Switch Statement_Sleep_Pause - Fatal编程技术网

C++ 如何将循环暂停几秒钟?

C++ 如何将循环暂停几秒钟?,c++,loops,switch-statement,sleep,pause,C++,Loops,Switch Statement,Sleep,Pause,每次他做了一个案子我都会停下来。但是我把sleep1放在哪里并不重要,它将睡眠5秒钟,然后一次给出所有的输出。或者,当我要求10个输出时,它将等待10秒,然后再给我输出 我想要的是在下一次输出之间有1秒的时间,依此类推。这是我的代码,我把它做得尽可能小,这样就不会花很长时间去阅读。 我试着把sleep1放在几乎每个地方,但结果都一样 //include list #include <stdio.h> #include <stdlib.h> #include <t

每次他做了一个案子我都会停下来。但是我把sleep1放在哪里并不重要,它将睡眠5秒钟,然后一次给出所有的输出。或者,当我要求10个输出时,它将等待10秒,然后再给我输出

我想要的是在下一次输出之间有1秒的时间,依此类推。这是我的代码,我把它做得尽可能小,这样就不会花很长时间去阅读。 我试着把sleep1放在几乎每个地方,但结果都一样

//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 
    }
}

我试着在一些在线编译器上运行你的代码

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

如果它仍然不工作,可能是缓冲区有问题

有时,字符在超出缓冲区或换行符被打印之前不会被打印。有两种方法可以尝试

在sleep方法之前使用fflushstdout调用清除缓冲区 使用C++ CUT库作为库自动刷新的更好方法
你是从哪里运行这个程序的?你是如何运行你的程序的?在在线IDE中?查看如果添加fflushstdout,行为是否会改变;睡前打电话。输出可能被缓冲。@ JuloOthAyNeLoNoRead在VisualStudio代码中运行它,如果使用C++,则使用CUT和Endl来刷新。如果这没有帮助,请尝试使用std::this_thread::sleep_for而不是sleep它不应该打印内容。只是更容易测试。但是谢谢,fflushstdout完成了这个作业,直到它的缓冲区满了才会刷新,和printf一样。除非调用flush函数,或者使用endl导致刷新。说它是自动的就像说printf会自动刷新一样是真是假。