| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 453 人关注过本帖
标题:关于显示时间的问题
取消只看楼主 加入收藏
我爱吃青菜
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:6
帖 子:190
专家分:500
注 册:2015-3-29
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
关于显示时间的问题
下面是显示时间的程序,我想问的是:
Sleep函数前面的计算需要时间,所以显示时间是否存在误差?
如果存在,在经过大量的循环后,时间误差累计凑够1秒,加上Sleep(1000),时间会不会一次性突然跳过2秒?

程序代码:
#include <stdio.h>
#include <windows.h>
#include <time.h>

int main()
{
    struct tm *ptr;
    for(;;)
    {
        time_t current = time(NULL);
        ptr = localtime(&current);
        printf("\r%.2d:%.2d:%.2d", ptr->tm_hour, ptr->tm_min, ptr->tm_sec);
        Sleep(1000);
    }
    return 0;
}
搜索更多相关主题的帖子: color 
2015-06-01 21:46
我爱吃青菜
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:6
帖 子:190
专家分:500
注 册:2015-3-29
收藏
得分:0 
回复 2楼 TonyDeng
我假设前面的计算每次耗时1毫秒(当然只是假设),当时间是22:00:00.999时current获取时间,此时显示是22:00:00。算完这几步后(1毫秒到了)就是22:00:01,再加上Sleep,就是22:00:02。接着current再获取时间,似乎就不对了。
2015-06-01 22:00
我爱吃青菜
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:6
帖 子:190
专家分:500
注 册:2015-3-29
收藏
得分:0 
回复 4楼 TonyDeng
嗯,我是觉得不对,但现在只想得到这个,有没有更好的办法
2015-06-01 22:04
我爱吃青菜
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:6
帖 子:190
专家分:500
注 册:2015-3-29
收藏
得分:0 
回复 6楼 TonyDeng
经过点拨,想了半天,似乎搞懂了,谢谢

程序代码:
#include <stdio.h>
#include <windows.h>
#include <time.h>

int main()
{
    struct tm *ptr;
    time_t start, current;
    for(;;)
    {
        start = clock();
        current = time(NULL);
        ptr = localtime(&current);
        printf("\r%.2d:%.2d:%.2d", ptr->tm_hour, ptr->tm_min, ptr->tm_sec);
        Sleep(1000-clock()+start);
    }
    return 0;
}


[ 本帖最后由 我爱吃青菜 于 2015-6-2 12:31 编辑 ]
2015-06-02 12:29
我爱吃青菜
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:6
帖 子:190
专家分:500
注 册:2015-3-29
收藏
得分:0 
受教了
2015-06-02 20:19
快速回复:关于显示时间的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021832 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved