LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1659|回复: 8

C下如何实现printf在同一行打印,让人感觉在计数

[复制链接]
发表于 2008-7-31 14:19:45 | 显示全部楼层 |阅读模式
C下如何实现printf在同一行打印
比如按秒数自动累加:
[root@localhost ~]#./test
sec:1
过1秒接下来
sec:1这个地方
变成
sec:2
再变成sec:3
依次类推
让人感觉sec:不变,而后面的数字在往上增加
下面这段是等了10秒,一下子显示sec:0sec:1:sec:2...sec:10
请问应该怎么改,或者什么其它实现方法,谢谢
#include <unistd.h>
#include <stdio.h>

int main()
{
for (int i=0; i<=10; i++)
        {
            sleep(1);
            printf ("\sec:%d", i);
        }
}
 楼主| 发表于 2008-7-31 14:22:06 | 显示全部楼层

C下如何实现printf在同一行打印,让人感觉在计数

C下如何实现printf在同一行打印
比如按秒数自动累加:
[root@localhost ~]#./test
sec:1
过1秒接下来
sec:1这个地方
变成
sec:2
再变成sec:3
依次类推
让人感觉sec:不变,而后面的数字在往上增加
下面这段是等了10秒,一下子显示sec:0sec:1:sec:2...sec:10
请问应该怎么改,或者什么其它实现方法,谢谢
#include <unistd.h>
#include <stdio.h>

int main()
{
for (int i=0; i<=10; i++)
        {
            sleep(1);
            printf ("\rsec: %d", i);
        }
}
回复 支持 反对

使用道具 举报

发表于 2008-7-31 15:17:44 | 显示全部楼层
可以这样
int i = 0;
for ( ; i < 10; i++)
{
    printf("\r sec: %d", i);   // /r是回车的转义符,目的是回到行首
    // fflush(stdout);           // 如果不能及时显示,就把这一行加上
    sleep(1);                       // 我觉得sleep放显示后面比较好,呵呵
}

PS:我试了一下,应该能实现你的要求 :)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-7-31 16:29:40 | 显示全部楼层

太感谢了,可以用了

太感谢了,可以用了
回复 支持 反对

使用道具 举报

发表于 2008-8-10 15:18:22 | 显示全部楼层
受教了,写得不错
回复 支持 反对

使用道具 举报

发表于 2008-8-10 23:45:45 | 显示全部楼层
Linux下的程序采用的更一般的做法是用ANSI/VT100 的ESCAPE序列。不但可以在字符控制,还可以在远程终端的屏幕任意位置显示任意颜色的字符。

以下链接写得比较全
http://www.termsys.demon.co.uk/vtansi.htm
回复 支持 反对

使用道具 举报

发表于 2008-8-11 09:04:33 | 显示全部楼层
关于 linux console escape and control sequences 的信息也可以
man console_codes
回复 支持 反对

使用道具 举报

发表于 2008-8-11 09:33:27 | 显示全部楼层
Post by 没本;1884605
Linux下的程序采用的更一般的做法是用ANSI/VT100 的ESCAPE序列。不但可以在字符控制,还可以在远程终端的屏幕任意位置显示任意颜色的字符。

以下链接写得比较全
http://www.termsys.demon.co.uk/vtansi.htm
多谢,我去学习一下,呵呵
回复 支持 反对

使用道具 举报

发表于 2008-8-11 09:34:26 | 显示全部楼层
Post by remote fish;1884642
关于 linux console escape and control sequences 的信息也可以
man console_codes
谢谢咯,:)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表