写了一个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
楼上的强