////////////////////////进度条显示//////////////////////////////////
/*
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;
}