makefile 和 进度条小程序

初学linux,学习了一个进度条小程序,给大家分享一下。
首先,进度条大体是一个什么样子呢?大家都见过进度条,就是一个长条不断变长的过程,旁边还有一个百分比数字显示加载了多少,为了美观还有各种小东西,比如一个像电风扇的东西在那里转。那么既然知道了进度条是一个什么样子,就那代码去实现它吧。


一个长条不断变长,我们可以用一个一个增加的“=”来表示它,当然了两头要有符号来表示它的开始和尽头,我们这里用“[]”来表示。那么我们就要定义一个数组,通过在数组里面不断写入新的 =,之后再打印数组,这里就能看起来是它一点一点的变长了。代码表示就是这样的:
void proc()
{
<span style="white-space:pre">	</span>int i=0;
<span style="white-space:pre">	</span>char proc_buf[102];
<span style="white-space:pre">	</span>memset(proc_buf,'\0',sizeof(proc_buf));
<span style="white-space:pre">	</span>while(i<=100)
<span style="white-space:pre">	</span>{
<span style="white-space:pre">		</span>printf("[%-101s]\n",proc_buf);
<span style="white-space:pre">		</span>proc_buf[i]= '=';
<span style="white-space:pre">		</span>i++;
<span style="white-space:pre">		</span>sleep(1);
<span style="white-space:pre">	</span>}
<span style="white-space: pre;">	</span>printf("\n");
}



当代码写到这里我们会发现它没打印一次就换一次行,完全不是我们的要求。那么我们就要对我们的代码做一个小改动:


int i=0;
char proc_buf[102];
memset(proc_buf,'\0',sizeof(proc_buf));
while(i<=100)
{
<span style="white-space:pre">	</span>printf("[%-101s]\r",proc_buf);
<span style="white-space:pre">	</span>fflush(stdout);
<span style="white-space:pre">	</span>proc_buf[i]= '=';
i++;
sleep(1);
}
printf("\n");




\n 的意思是回车并且换行,而 \r 的意思是回车没有换行,也就是返回行首的意思。
fflush()的作用是刷新一个缓冲区,stdout就是标准输出流。
把代码改成这样的就看可以看到这样的效果:




然后,我们就要添加上那个百分号数字了。其实很简单,我们之前已经定义了一个i,我们只要输出它就可以了,那么像一个电风扇那样在那里转的符号我们可以用“|\-/”这四个符号来表示:
</pre><pre name="code" class="cpp">#include"proc.h"

void proc()
{
	int i=0;
	char proc_buf[102];
	memset(proc_buf,'\0',sizeof(proc_buf));
	const char* lable="|/-\\";
	while(i<=100)
	{
		printf("[%-101s][%d%%][%c]\r",proc_buf,i,lable[i%4]);
		fflush(stdout);
		proc_buf[i]= '=';
		i++;
		sleep(1);
	}

	printf("\n");
}



那么上面就是完整的代码了。


效果:




作为初学者,对于linux里的各种工具要尽快使用起来。我们都知道linux里是没有IDE的。那么程序的编译过程是需要由我们来完成的,这时候就需要用到makefile这个工具了。makefile一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令。
总之makefile是帮助我们进行文件编译的工具。我的这个小程序有三个文件,main.c,proc.c,proc.h,通过makefile编译,那么makefile文件里面的内容就是这样的:


main:main.c proc.c proc.h
gcc -o main main.c proc.c

.PHONY:clean
clean:
rm -f main


makefile的终点就是依赖关系和完成的方法,main是依赖于main.c proc.c proc.h这三个文件生成的,他的方法要用tab开头内容是shell命令。clean是用来方便我们对文件进行清楚的,这里不需要它依赖于什么,而只需要一个完成的方法就可。


编写完成makefile文件之后,只需要在命令行输入$ make就可以完成本程序的编译了,想要删除呢,就输入 $ make clean 生成的文件就删除了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值