我的要求是,不断刷新屏幕中显示的字符串.
比如我在屏幕中输出abc,每秒变换一次,下一秒钟也许就变成了def了.
如果只是printf(),那不会覆盖原来的abc,只会在abc后面增加def而已.
我知道有个curses库函数.
不过这个使用总感觉比较困难,难道top命令也是用那个实现的?
我也是刚刚解决这个问题,不知道现在回答你还晚不晚,但是不管怎么样,我觉得还是回一下比较好。一方面,可能你还没解决这个问题(不过可能性有点小),另一方面,这是主要原因,让后来的的人可以看到这个帖子的答案。
在linux系统下可以使用clear
命令来实现清屏操作,也就是说,你在用C语言编程时,可以使用system("clear");
来实现。详细信息可以参考这个博客
Bash脚本的实现方法如下:
例一,只显示一行进度条
#!/bin/sh
b=''
for ((i=0;$i<=100;i+=2))
do
printf "progress: [%-50s] %d%%\r" $b $i
sleep 0.1
b+='#'
done
echo # 为了换行.上面的printf是不换行的.这里可写成printf "\n"
例二,显示两行进度条
#!/bin/sh
for ((i=0;$i<=100;i+=2))
do
printf " progress: [%-50s] %d%%\r\n progress: [%-50s] %d%%\r" $b $i $b $i
printf '\033[A' # 把光标上移1行
sleep 0.1
b+='#'
done
printf '\033[B' # \033[nB 光标下移n行.这么说吧:用了多少个\n,一般就需要把光标上下移动多少行
echo