第一种,用printf模拟输出百分比,在控制台输出,实现进度监控。
代码:
#include<stdio.h>#define N 20
void mBar(float fBar){
int i,j,k,m
for ( i=0i<N+6i++ ) printf("\b")
k=N*fBar m=fBar*100 printf("[")
for ( i=0i<ki++ ) printf("=")
for ( j=0j<N-kj++ ) printf(" ")
printf("]%3d%%",m)
}
void delay(int n) { int i,j,k for ( i=0i<ni++ ) for ( j=0j<0x07fffj++ ) k++ }
void main()
{
float x
int i
for ( i=0,x=0i<100i++,x+=0.01 ) { mBar(x) delay(1024) }
mBar(1)
}
第二种,使用窗口组件。这个要看程序工作环境,纯粹的c语言是无法实现的。可以使VC++。Visual C++中的MFC类提供了标准的进度指示器控件(CProgressCtrl)。
m_progress->GetPos()//获取进度条的当前位置
m_progress->GetRange(int min,int max)//获取进度条控件的范围的下限和上限
m_progress->OffsetPos(int nPos)//用指定的增量推进进度条控件的当前位置,重绘进度条反映新位置
m_progress->SetBkColor(COLORREF clrNew)//设定进度条的背景颜色
m_progress->SerPos(int nPos)//设定进度条控件的当前位置,重绘进度条反映新位置
m_progress->SetRange(int min,int max)//设定进度条控件的范围的下限和上限
m_progress->SetRange32(int min,int max)//设定进度条控件的范围的下限和上限
m_progress->SetStep(int nStep)//指定进度条控件的步进增量
m_progress->StepIt()//通过步进增量,推进进度条控件的当前位置,重绘进度条反映新位置
应用:
CProgressCtrl *m_progress//头文件中声明
在OnInitDialog初始化
{
m_progress = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS1)
m_progress->SetRange(0,1000)
m_progress->SetPos(0)
UINT m_timer =(UINT) SetTimer(1,200,NULL)
}
采用在定时器的消息处理函数WM_TIMER内添加不断更新进度条界面的方法
OnTimer (nIDEvent)
{
pos = pos + 50
if(pos>500)
pos = 0
m_Progress->SetPos(pos)
}
或者采用在某种循环体内添加不断更新进展条界面的方法
程序1:#include "stdio.h"#include <dos.h>
#include <conio.h>
/*去光标函数*/
void no_text_cursor(void)
{
union REGS r
r.h.ah=1
r.h.ch=32
int86(0x10,&r,&r)
}
main()
{
int i
int bfb
char b=219
char c='%'
for(i=1i<=60i++)
{ gotoxy(i,1)/*为了能在进度条和百分比之间变动让轮扰*/
no_text_cursor()
delay(45000)/*前后两个delay是为了坦旦让滚动更好看,流畅*/
printf("%c",b)
delay(45000)
gotoxy(31,2)/*为了能在进度条和百分比之间变动*/
bfb=((i*10)/6)
printf("%d",bfb)
gotoxy(34,2)
printf("%")
}
printf("\nLoading Successful!")
getch()
}程序2:#include<graphics.h>
main()
{
int gdriver=DETECT,gmod,i
/桐哗*registerbgidriver(EGAVGA_driver)*/
initgraph(&gdriver,&gmod,"")
setlinestyle(0,0,2)
rectangle(3,215,637,250)
setcolor(RED)
sleep(3)
for(i=0i<632++i)
{
if(i==631)break
line(5+i,216,5+i,249)
delay(2888)
}
getch()
closegraph()
} 以上程序均在TC2.0下通过
<p>您好,sa团队给出的答案</p> <p>(由于本人不用做百分比进度条,所以从网上找了一个,不知道对不对,仅供参考)</p> <p>#!/bin/sh<br>off (){<br>echo -e "\e[?25l"<br>}<br>on (){<br>echo -e "\e[?25h"<br>}<br>gotoxy (){<br>echo -ne "\e[$1$2h"<br>}<br>character (){<br>gotoxy 0 0<br>echo "["<br>gotoxy 0 44<br>echo "]"<br>n=2<br>num=0<br>while [ $n != 44 ]<br>do<br>sleep 0.07<br>gotoxy 0 $n<br>echo -en "\e[144m \e[0m"<br>gotoxy 0 45<br>echo -n "$num%"<br>num=$(echo "$n * 2.3 + 1" | bc )<br>(( n++ ))<br>done<br>gotoxy 0 45<br>echo -n "100.0%"<br>}<br>clear<br>off<br>character <br>on</p>雹运伍 <p></p> <p>源或 </p> <p>这里有一个网悄芹址,提供给您(cfm补丁0.2版,增加了进度条,百分比等内容的显示 </p> <p>): <a href="https://wenwen.sogou.com/login/redirect?url=http%3a%2f%2fclub.noahedu.com%2fthread-116262-1-1.html" target="_blank">http://club.noahedu.com/thread-116262-1-1.html</a></p>欢迎分享,转载请注明来源:内存溢出
评论列表(0条)