Linux中ctags、make以及进度条小程序(\r的应用)
来源:互联网 发布:网络统考大学英语b 编辑:程序博客网 时间:2024/05/16 01:48
一、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: 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; }
本文出自 “城市猎人” 博客,请务必保留此出处http://alick.blog.51cto.com/10786574/1784218
- Linux中ctags、make以及进度条小程序(\r的应用)
- linux 系统的 ctags 以及Makefile的应用
- 我的第一个Linux小程序(进度条)
- Linux下的进度条小程序
- Linux下的小程序:进度条
- Linux下的进度条小程序
- \r 与 \n 的区别(应用在Linux下进度条的制作)
- Vim中ctags -R不能标签子目录的原因以及解决办法
- Linux之小程序进度条
- Linux下进度条小程序
- Linux实现进度条小程序
- Linux入门:进度条小程序
- Linux简单小程序---进度条
- 【Linux】彩色进度条的实现,Linux小程序
- Linux下的第一个小程序之进度条
- linux下的一个小程序--模拟进度条
- 在Linux下编写一个进度条的小程序
- 我的第一个Linux小程序----进度条
- Linux 中find命令与文件权限
- 记录前端学习的过程中值得收藏的文章
- linux下mysql启动问题
- Vim(Linux编辑器)简单配置和常用命令
- HashTable-哈希表/散列表
- Linux中ctags、make以及进度条小程序(\r的应用)
- 关于 VS 2010 和 VS 2013 的警告 LNK4042
- 操作系统---常见进程调度算法
- task_struct结构体字段介绍--Linux中的PCB
- 人大金仓数据库使用总结
- 程序运行 栈帧分析 以及 修改栈帧中数据以及函数地址
- echarts使用方法
- 二叉树中找两个结点的最近的公共祖先结点
- 进程通信----管道(pipe)