//// // // // // // // // // // // 进度条显示//// // // // // // // // // // // // // // // //
/*
void displayProgress(int progress){
int k = 0 ;
for (k=0 ; k<106 ; k++)
putchar('\b' );// 将当前行全部清空,用以显示最新的进度条状态
int j = 0 ;
for (j=0 ; j<progress; j++)
putchar('+' );// 打印进度条上已经完成的部分,用‘+’表示
for (j=1 ; j<=100 -progress; j++)
putchar('-' );// 打印进度条上还有多少没有完成的
fprintf(stdout, " %3d %% " ,progress);
fflush(stdout);
}
int main()
{
int i;
for (i=0 ;i<100 ;i++){
displayProgress(i);
sleep (1 );
}
}
*/
/*
void mBar(float fBar){
int i,j,k,m ;
for ( i=0 ;i<N+6 ;i++ ) printf ("\b" );
k=N*fBar ; m =fBar*100 ; printf ("[" );
for ( i=0 ;i<k;i++ ) printf ("=" );
for ( j=0 ;j<N-k;j++ ) printf (" " );
printf ("]%3d %% " ,m );
}
void delay(int n) { int i,j,k; for ( i=0 ;i<n;i++ ) for ( j=0 ;j<0x07fff ;j++ ) k++; }
void main()
{
float x ;
int i;
for ( i=0 ,x =0 ;i<100 ;i++,x +=0 .01 ) { mBar(x ); delay(1024 ); }
mBar(1 );
} */
/*
//类似wget的进度条的实现,实际就是转移符\r的使用,\r的作用是返回至行首而不换行
int main(int argc, char *argv [])
{
unsigned len = 60 ;
char *bar = (char *) malloc(sizeof(char) * (len + 1 ));
int i = 0 ;
for (i = 0 ; i < len + 1 ; ++i)
{
bar[i] = '#' ;
}
for (i = 0 ; i < len; ++i)
{
printf ("progress:[%s ]%d %% \r" , bar+len-i, i+1 );
fflush(stdout);// 一定要fflush,否则不会会因为缓冲无法定时输出。
usleep(100000 );
//sleep (1 );
}
printf ("\n" );
return 0 ;
}
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>
int main(void )
{
struct winsize size;
if (isatty(STDOUT_FILENO) == 0 )
exit(1 );
if (ioctl(STDOUT_FILENO, TIOCGWINSZ, &size)<0 )
{
perror("ioctl TIOCGWINSZ error" );
exit(1 );
}
printf("%d rows, %d columnsn" , size.ws_row, size.ws_col);
return 0 ;
}