650"/>

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以及进度条小程序( 的应用)的主要内容,如果未能解决你的问题,请参考以下文章

Linux下的进度条小程序

<Linux>进度条小程序和git使用详解

Linux进度条小程序(结合缓冲区相关知识)

Linux进度条小程序(结合缓冲区相关知识)

Linux | 手把手教你写一个进度条小程序

Linux下的进度条小程序