首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在for循环中正确实现睡眠函数?(Ubuntu)

如何在for循环中正确实现睡眠函数?(Ubuntu)
EN

Stack Overflow用户
提问于 2019-04-17 03:56:21
回答 1查看 54关注 0票数 2

我试图让我的代码在屏幕上打印一些东西,然后等待1秒,然后绕过for循环,再次打印21次。当我在CodeBlocks中使用#include,然后使用睡眠(1000)来做这件事时,它是有效的。但是当我在我的Ubuntu虚拟机上使用#include和sleep(1)来做这件事时,所有的东西都从我的终端上消失了21秒,然后所有的东西都同时出现了。我想我用错了函数或者别的什么。

有什么想法吗?

这是Ubuntu终端中的代码,它最终删除了我的终端上已经存在的所有东西,等待21秒,然后打印21次"Hello“。

代码语言:javascript
复制
#include <stdio.h>
#include <unistd.h>

int main()

{
    for (int i = 0; i < 21; i++)
    {
        printf("Hello");
        sleep(1);           
    }

}

这是Windows中的代码,它在21秒内每秒打印"Hello“,因此在21秒内在我的屏幕上打印21个Hello。这就是我想在我的Ubuntu虚拟机中实现的。

代码语言:javascript
复制
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>

    int main() {
        for (int i = 0; i < 21; i++)
        {
            printf("Hello");
            Sleep(1000);
        }

        return 0; 
    }
EN

回答 1

Stack Overflow用户

发布于 2019-04-17 03:59:16

在UNIX中,进程流缓冲-默认情况下,它们会累积I/O,并且不会在写入时立即“刷新”到底层设备。所以-你需要刷新数据流:

代码语言:javascript
复制
#include <stdio.h>
#include <unistd.h>

int main()

{
    for (int i = 0; i < 21; i++)
    {
        printf("Hello");
        fflush(stdout);
        sleep(1);           
    }

}

我相信,如果你在"Hello“之后输出一个换行符'\n‘,它也会起作用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55715722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档