Linux中ctagsmake以及进度条小程序( 的应用)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux中ctagsmake以及进度条小程序( 的应用)相关的知识,希望对你有一定的参考价值。
一、ctags 查看函数定义的好工具
ctags -R 在当前目录建立tags文件
ctrl +] + 回车 跳到函数定义处
ctrl + t 返回
二、make与Makefile
make 是一条命令
Makefile 是一个文件
make的执行需要一个Makefile文件
Makefile 两个重要关系 依赖关系 依赖方法
touch Makefile/makefile
1 依赖方法前面要有Tab键
2 进行过程从上向下 向下时只要有一个可以执行就回退(向上走、退栈) 不再执行下面的(伪目标是不执行的,这里所说的执行,是指找到依赖关系的文件,对于依赖方法执行的成功与否是不管的)
3 这个伪目标
.PHONY:clean
clean:
rm -f 文件名
是常用的,用于清理make中间文件
调用方法:
make clean
4 @屏蔽依赖方法执行细节 不在屏幕显示
--------------------------------------------------
三、进度条小程序
先看看\n,\r
回车(\r只是输出到输出缓冲区)换行(\n换行才从输出缓冲区输出到屏幕上)
\r是回车,英文是Carriage return,作用:使光标到行首
\n是换行,英文是New line/line feed,作用:使光标下移一行
【注意:\n会将结果从输出缓冲区 强制刷到 显示器上 一般没有\n则结果是先输出到输出缓冲区 等输出缓冲区满 或者是程序运行结束才输出到输出显示器上】
如果用过机械打字机,就知道回车和换行的区别了。
回车就是把水平位置复位,不卷动滚筒。
换行就是把滚筒卷一格,不改变水平位置。
我们平时所说的键盘Enter键换行实则应该叫做叫做回车换行(\r\n)
看到一种说法:
windows下enter是 \r\n;
linux/unix下是\n;
mac下是\r
Windows 采用 \r\n 是有原因的,Windows 采用了传统的英文打字机的模式。
想想看英文打字机是如何换行的呢?英文打字机是选择将小车退回至起点,
这个过程称为回车(carriage return, CR),随后把小车调至下一行的位
置,这个过程称为换行(line feed, LF),这样就完成了英文打字机中换
行过程。
回车(CR)在计算机中使用 ASCII 为 13 的字符来表示(0x0D),换行(LF)使用
ASCII 为 10 的字符来表示(0x0A)。
注意:
1、windows下可直接使用\n来匹配换行符,但仍然推荐使用标准的\r\n来匹配键盘Enter键的换行符;
2、使用\r\n组合是有顺序的,调转顺序写成\n\r是错误的,将无法匹配换行符!
小的测试程序 测试\n
#include<stdio.h> int main() { // 没有\n // 则 先输出的输出缓冲区 等程序执行结束才 输出到显示器上 // 所以 执行结果是 先睡2秒 而后输出 //printf("%-20s","123456"); // 有\n \n是换行 会将输出缓冲区的数据 输出到屏幕上 // 执行结果是 先输出 再睡2秒 printf("%20s\n","123456"); sleep(2); return 0; }
进度条小程序
原理:
1 设置一个字符数组 用于保存输出的字符串
2 利用\r 回车 使得每次光标回到最左边,覆盖之前的字符串(这里\r 是回车 产生覆盖效果 不是换行 所以不会在下一行有输出,只是在原来的基础上变)
3 没有\n 所以利用fflush(stdout 强制从输出缓冲区输出到屏幕上)
4 每次新字符串比旧的多输出一个# 视觉上就是进度增长
5 用%-100s 固定输出长度 使得【】位置固定 -是左对齐
6 用sleep() 每次睡一会 使进度条缓慢增长
/************************************************************************* > File Name: proc_sleep.c > Author: ma6174 > Mail: [email protected] > Created Time: 2016年05月27日 星期五 21时11分47秒 ************************************************************************/ #include<stdio.h> #include<string.h> void proc() { const int size = 102; char arr[size]; char state[] = "\\|/-"; memset(arr,‘\0‘,sizeof(arr)); int count = 0; while (count < size - 1) { arr[count] = ‘#‘; printf("[%-100s][%d%%][%c]\r",arr,count++,state[count%4]); fflush(stdout); sleep(1); // Sleep(1000); windows下 #include<Windows.h> } printf("\n"); } int main() { proc(); return 0; }
本文出自 “城市猎人” 博客,请务必保留此出处http://alick.blog.51cto.com/10786574/1784218
以上是关于Linux中ctagsmake以及进度条小程序( 的应用)的主要内容,如果未能解决你的问题,请参考以下文章