Linux中ctags、make以及进度条小程序(\r的应用)

来源:互联网 发布:网络统考大学英语b 编辑:程序博客网 时间:2024/05/16 01:48

一、ctags  查看函数定义的好工具

ctags -R 在当前目录建立tags文件

wKioL1dKkXDwXAxAAAAKU6-fnY8001.pngwKioL1dKkYCCbo7QAADitB5ZtLY404.png

ctrl +]  + 回车 跳到函数定义处

wKiom1dKkKqAzQR_AACKxabGR0k243.pngwKioL1dKkbzwrd1sAABVcAUP6n8296.png

ctrl + t 返回



二、make与Makefile

make 是一条命令

Makefile 是一个文件 

make的执行需要一个Makefile文件

Makefile 两个重要关系 依赖关系 依赖方法

touch Makefile/makefile

wKiom1dKkRiQfLIkAAArUR0a60I507.png

1 依赖方法前面要有Tab

wKiom1dKkTTCG8wlAAAXbbZ02CE601.pngwKioL1dKkjfyOrcYAAD_V80X4f8002.png

2 进行过程从上向下 向下时只要有一个可以执行就回退(向上走、退栈) 不再执行下面的(伪目标是不执行的,这里所说的执行,是指找到依赖关系的文件,对于依赖方法执行的成功与否是不管的)

wKioL1dKklTRJX1iAABI03QLG6E123.png

3 这个伪目标 

.PHONY:clean

clean:

rm -f 文件名

是常用的,用于清理make中间文件

调用方法:

make clean

wKiom1dKkYPx5cYuAAGDgVeZV54048.png

4 @屏蔽依赖方法执行细节 不在屏幕显示

wKioL1dKkqLz4eyGAABG8Amf0T8927.png

wKiom1dKkaiiOBH3AAAiJO6ngz0283.png

--------------------------------------------------


三、进度条小程序

先看看\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: ma6174@163.com > 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; }

wKioL1dKk2vwBXCXAAAYvixj6_c490.png

wKiom1dKknLRYZNiAAAZ2NGeWp8076.png


本文出自 “城市猎人” 博客,请务必保留此出处http://alick.blog.51cto.com/10786574/1784218

0 0