首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

写了一个console程序,但是想在同一行(同一位置)刷新显示的内容解决方案

2012-02-06 
写了一个console程序,但是想在同一行(同一位置)刷新显示的内容如果只是刷新同一行,可一如下: printf(

写了一个console程序,但是想在同一行(同一位置)刷新显示的内容
如果只是刷新同一行,可一如下:
> > printf( "current   progress:   %03d\r ",   progress);
但是我要是同时显示多行时怎么办?如:
> > printf( "current   progress:   %03d\r ",   progress);
> > printf( "current   time:   %02d:%02d:%02d\r ",   hour,   minute,   second);

[解决办法]
这个,你还是别用console了吧,gui才是处理这种人机交互的。
[解决办法]
给你一个例子

文本模式下的进度百分比表示:
#include <stdio.h>
#include <windows.h>

int main(void)
{
int i = 0;

while (i <= 100)
{
printf( "%4d%%\b\b\b\b\b ", i);
i ++;
Sleep(100);
}

return 0;
}
[解决办法]
/r回车即可
[解决办法]
这个跟你平台和终端类型关系大些, 如果是 linux/unix 啥的简单些, 如果是 win 麻烦些, 用用 SetConsoleCursorPosition .... 啥的函数还是可以的, 不过木啥意思, 不如写 *nux 程序在 cygwin 下编译算了 ....

[解决办法]
根据hailongchang(我把QQ丢了......) 的例子做了一个,丑陋了点,将就着看看,然后改改吧
其实看那个例子就应该会做了,lz还是没动脑筋啊

#include <windows.h>
#include <stdio.h>

int main()
{
//get current time
SYSTEMTIME t;
for(int i=0;i <120;i++)
{
GetLocalTime(&t);
printf( "current time: %02d:%02d:%02d\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b ",
t.wHour,t.wMinute,t.wSecond);
Sleep(1000);
}
return 0;
}

[解决办法]
我是想同时刷新多行,即在屏幕上如下:
program //不需要不断刷新
user //不需要不断刷新
current progress: 45 //需要不断刷新
current time: 10:30:40 //需要不断刷新

如果只要这些信息的话,可以循环 "清屏--输出 "这个动作阿

[解决办法]
移动光标到指定位置,然后输出相关信息,可以覆盖原来相同位置的内容,达到刷新的目的。
[解决办法]
\33[NA
楼上的强

热点排行