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命令的简单实现的更多相关文章

  1. linux下cat命令详解

    简略版: cat主要有三大功能:1.一次显示整个文件.$ cat filename2.从键盘创建一个文件.$ cat > filename     只能创建新文件,不能编辑已有文件.3.将几个文 ...

  2. 13个Cat命令管理文件实例汇总

    在Linux系统中,大多数配置文件.日志文件,甚至shell脚本都使用文本文件格式,因此,Linux系统存在着多种文本编辑器,但当你仅仅想要查看一下这些文件的内容时,可使用一个简单的命令-cat. c ...

  3. 13个Cat命令管理(显示,排序,建立)文件实例

    在Linux系统中,大多数配置文件.日志文件,甚至shell脚本都使用文本文件格式,因此,Linux系统存在着多种文本编辑器,但当你仅仅想要查看一下这些文件的内容时,可使用一个简单的命令-cat. c ...

  4. cat命令常用的13个技巧

    在Linux系统中,大多数配置文件.日志文件,甚至shell脚本都使用文本文件格式,因此,Linux系统存在着多种文本编辑器,但当你仅仅想要查看一下这些文件的内容时,可使用一个简单的命令-cat. c ...

  5. Linux:最终用途cat命令查看不可见的字符

    常,的程序或软件,并没有语法错误,你检查其内容没有发现相关问题.这是时间,因为你用普通的文本编辑软件来查看,有很多的字符显示不出来的,但在最终用途cat命令可以很easy地检測出是否存在这些字符. ~ ...

  6. Linux学习历程——Centos 7 cat命令

    一.命令介绍 我们使用man cat命令,可以看到cat命令的用途是连接文件或标准输入并打印,简单来说cat命令是用来查看纯文本文件(通常为内容较少的文件),与重定向符号配合使用,可以实现创建文件与合 ...

  7. cat命令合并多个txt文件

    cat是concatenate的缩写,意为串联,之前经常看到别人在用cat命令,没有细究 cat命令两个常用的用法是: cat file.txt能够将txt中的内容显示出来 cat file1.txt ...

  8. Linux命令 cat命令

    这个命令可不是“猫”的意思,而是catenate的缩写.顾名思义,是把东西串起来.比如:cat file1 file2就是把文件file1和file2连在一起,然后输出到屏幕上.注意,输出到屏幕上是c ...

  9. 【Linux】- cat命令的源码历史

    转自:Cat 命令的源码历史 以前我和我的一些亲戚争论过计算机科学的学位值不值得读.当时我正在上大学,并要决定是不是该主修计算机.我姨和我表姐觉得我不应该主修计算机.她们承认知道如何编程肯定是很有用且 ...

随机推荐

  1. Git创建工作目录与常用指令

    1.创建工作目录与常用指令 工作目录(WorkSpace)一般就是你希望Git帮助你管理的文件夹,可以是你项目的目录,也可以是一个空目录,建议不要有中文. 日常使用只要记住下图6个命令: 2.提交管理 ...

  2. Mysql中decode函数的几种用法

    1.使用decode判断字符串是否一样 decode(value,if1,then1,if2,then2,if3,then3,...,else) 含义为 IF 条件=值1 THEN RETURN(va ...

  3. 【English】 Re-pick up English for learning big data (not updated regularly)

    2019.10.6 parse:解析mean:平均数stddev:标准偏差 2019.10.7 bigdata platform:大数据平台 2019.10.14 allocate resource ...

  4. [新手必备]Python 基础入门必学知识点笔记

    Python 作为近几年越来越流行的语言,吸引了大量的学员开始学习,为了方便新手小白在学习过程中,更加快捷方便的查漏补缺.根据网上各种乱七八糟的资料以及实验楼的 Python 基础内容整理了一份极度适 ...

  5. FSMN 及其变种 cFSMN DFSMN pyramidal-FSMN

    原文: https://blog.csdn.net/qq_26778411/article/details/89682447 也可以参考:  http://vsooda.github.io/2018/ ...

  6. HDU-4190-Number Sequence-容斥原理+多重集和的r组合

    HDU-4190-Number Sequence-容斥原理+多重集和的r组合 [Problem Description] 给你\(n\)个数\(b_i\),问有多少个长度为\(n\)序列\(a_i\) ...

  7. flask处理数据,页面实时刷新展示

    背景: 后端 flask(python)处理数据,页面实时刷新,类似于打包页面的动态展示,展示效果如图: 代码如下: 前端主要使用以下循环处理, 2--- 2秒刷新一次 {% if 0 == stop ...

  8. 神经网络(13)--具体实现:random initialization

    Θ应初始化为什么值 当我们是用logistic regression算法时,将θ初始化为0是可以的:但是如果在神经网络里面,将θ初始化为0是不可行的 若将Θ初始化为0的后果-the problem o ...

  9. java相关资料连接

    1.tomcat原理https://www.ibm.com/developerworks/cn/java/j-lo-tomcat1/index.html ....

  10. 微信小程序引入Vant组件库

    前期准备 Vant Weapp组件库:https://youzan.github.io/vant-weapp/#/intro 1.先在微信开发者工具中打开项目的终端: 然后初始化一个package.j ...