cat命令的简单实现
cat命令的简单实现
目标:简单的实现cat命令
实现的mic_cat命令主要有三大功能
1.mic_cat命令一次显示整个文件 $ mic_cat filename
2.mic_cat命令从键盘创建一个文件 $ mic_cat > filename
3.mic_cat命令将几个文件合并为一个文件 $ mic_cat filename1 filename2 >file
实现的参数(最常用的两个)
-n 由1开始对所有输出行数编号
-s 当遇到两行以上的空白行,就换为一行空白
代码
环境:ubuntu 14.04 gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1)
新手菜鸟 如有错误 欢迎指正
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<stdbool.h>
#define LENMAX 512
bool show_number=false;
bool squeeze_blank=false;
bool had_blank=false;
void do_cat(FILE *);
int main(int argc,char *argv[])
{
int opt;
FILE * fp;
while((opt=getopt(argc,argv,"sn"))!=-1){
switch(opt){
case 's':
squeeze_blank=true;
break;
case 'n':
show_number=true;
break;
case '?':
printf("unknow option :%c\n",optopt);
exit(1);
}
}
if(argc==1)
do_cat(stdin);
else
for(; optind<argc;optind++){
fp=fopen(argv[optind],"r");
if(!fp){
printf("open error :%s\n",argv[optind]);
exit(1);
}
do_cat(fp);
}
}
void do_cat(FILE *fp)
{
char line[LENMAX];
int l=1;
while(fgets(line,LENMAX,fp)){
if(squeeze_blank)
{
if(line[0]=='\n'){
if(had_blank==false){
if(show_number)
printf("%d ",l++);
fputs(line,stdout);
had_blank=true;
}
else
continue;
}
else{
if(show_number)
printf("%d ",l++);
fputs(line,stdout);
had_blank=false;
}
}
else{
if(show_number)
printf("%d ",l++);
fputs(line,stdout);
}
}
}
cat命令的简单实现的更多相关文章
- linux下cat命令详解
简略版: cat主要有三大功能:1.一次显示整个文件.$ cat filename2.从键盘创建一个文件.$ cat > filename 只能创建新文件,不能编辑已有文件.3.将几个文 ...
- 13个Cat命令管理文件实例汇总
在Linux系统中,大多数配置文件.日志文件,甚至shell脚本都使用文本文件格式,因此,Linux系统存在着多种文本编辑器,但当你仅仅想要查看一下这些文件的内容时,可使用一个简单的命令-cat. c ...
- 13个Cat命令管理(显示,排序,建立)文件实例
在Linux系统中,大多数配置文件.日志文件,甚至shell脚本都使用文本文件格式,因此,Linux系统存在着多种文本编辑器,但当你仅仅想要查看一下这些文件的内容时,可使用一个简单的命令-cat. c ...
- cat命令常用的13个技巧
在Linux系统中,大多数配置文件.日志文件,甚至shell脚本都使用文本文件格式,因此,Linux系统存在着多种文本编辑器,但当你仅仅想要查看一下这些文件的内容时,可使用一个简单的命令-cat. c ...
- Linux:最终用途cat命令查看不可见的字符
常,的程序或软件,并没有语法错误,你检查其内容没有发现相关问题.这是时间,因为你用普通的文本编辑软件来查看,有很多的字符显示不出来的,但在最终用途cat命令可以很easy地检測出是否存在这些字符. ~ ...
- Linux学习历程——Centos 7 cat命令
一.命令介绍 我们使用man cat命令,可以看到cat命令的用途是连接文件或标准输入并打印,简单来说cat命令是用来查看纯文本文件(通常为内容较少的文件),与重定向符号配合使用,可以实现创建文件与合 ...
- cat命令合并多个txt文件
cat是concatenate的缩写,意为串联,之前经常看到别人在用cat命令,没有细究 cat命令两个常用的用法是: cat file.txt能够将txt中的内容显示出来 cat file1.txt ...
- Linux命令 cat命令
这个命令可不是“猫”的意思,而是catenate的缩写.顾名思义,是把东西串起来.比如:cat file1 file2就是把文件file1和file2连在一起,然后输出到屏幕上.注意,输出到屏幕上是c ...
- 【Linux】- cat命令的源码历史
转自:Cat 命令的源码历史 以前我和我的一些亲戚争论过计算机科学的学位值不值得读.当时我正在上大学,并要决定是不是该主修计算机.我姨和我表姐觉得我不应该主修计算机.她们承认知道如何编程肯定是很有用且 ...
随机推荐
- Linux REDHAT 7 关闭、禁用防火墙服务
1 查看防火墙状态 [root@lvxinghao ~]# systemctl status firewalld 2 查看开机是否启动防火墙服务[root@lvxinghao ~]# systemct ...
- android RecyclerView的瀑布流布局案例
1.先创建 activity_water_fall.xml 和 activity_water_fall_item.xml <?xml version="1.0" encodi ...
- FreeRTOS互斥信号量
API函数 #if( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) #define xSemaphoreCreateMutex() xQueueCreateMutex ...
- typescript_类
//类的定义 class Animal{ id:string;//默认访问修饰符为 public : 类本身.子类.类外部可访问 public name:string; // public : 类本身 ...
- 通过标签名获得td和tr
<tr node="123445"> <td> <input type=button name="dak"> </td ...
- mysql json字段
从 MySQL 5.7.8 开始,MySQL 支持原生的 JSON 数据类型. 一. 创建json(不可以设置长度,可以是null,不能用有默认值) mysql> CREATE TABLE ...
- SQL Server 字段提取拼音首字母
目前工作中遇到一个情况,需要将SQL Server中的一个字段提取拼音的首字母,字段由汉字.英文.数字以及“-”构成,百度了一堆,找到如下方法,记录一下,以备后用! 首先建立一个函数 --生成拼音首码 ...
- zabbix 自动发现(LLD)
概述 自动发现(LLD)提供了一种在计算机上为不同实体自动创建监控项,触发器和图形的方法.例如,Zabbix可以在你的机器上自动开始监控文件系统或网络接口,而无需为每个文件系统或网络接口手动创建监控项 ...
- 使用Cloudera Manager搭建MapReduce集群及MapReduce HA
使用Cloudera Manager搭建MapReduce集群及MapReduce HA 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.通过CM部署MapReduce On ...
- POST请求接口实列
通过响应状态来判断是否读取数据与抛出异常,然后通过判断获取的字节数去读取数据或抛出异常 /** * 发送HttpPost请求 * @param strURL * 服务地址 * @param param ...