嗨翻C语言——创建小工具(3)

1、一种工具叫过滤器(filter),逐行读取数据,对数据进行处理,再把数据写到某个地方。
head:显示文件头几行。
tail:显示文件最后几行。
sed:流编辑器(stream editor),用来搜索和替换文本。
2、可以用重定向使文件不用改代码,甚至不用重新编译就可以让程序使用文件。
3、在程序运行时,操作系统会创建标准输入和标准输出,使操作系统可以从键盘外的地方读数据,往显示器外的地方写数据。
4、<操作符告诉操作系统,程序的标准输入应该与data.csv文件相连,而不是键盘。

data.csv-->geo2json
      >操作符把标准重定向到文件。  geo2json-->output.json

5、在程序运行结束后检查错误状态
(1)MAC,Linux,UNIX:

$ echo $?

(2)Window使用Cygwin:

echo %ERRORLEVEL%

6、标准错误,一个用来发送错误消息的二号输出。
7、输入只有一个标准输入,输出有标准输出和错误输出。
8、未使用重定向时,标准输入来自键盘,标准输出和标准错误发送到显示器;当使用重定向,标准输入来自文件,标准输出发送到文件,标准错误仍然发送到显示器。
9、printf()只是fprintf()函数的特例;

printf(“我喜欢乌龟");  <==>   fprintf(stdout,"我喜欢乌龟”);
fprintf()把文本发送到stdout(标准输出),也可以发送到stderr(标准错误);

10、可以用fscanf()从stdin(标准输入)中读取数据。
11、>重定向标准输出 2>重定向标准错误。
12、小工具原则:从标准输入读取数据;在标准输出显示数据;处理文本数据,而不是难以阅读的二进制格式;只做一件简单的事。
13、符号|表示管道(pipe),他能连接一个进程的标准输出与另一个进程的标准输入。

bermuda | geo2json

14、小工具只能串在一起使用,因为一个小工具只能解决一个问题,而无法解决整个问题,所以需要使用管道将他们串联起来。一连串相连的进程叫流水线(pipeline)
15、两个用管道相连的程序可以同时开始运行。
16、为什么小工具要使用文本:文本是一种开放格式,程序员可以用文本编辑器来查看小工具的输出,并理解里面的内容,相比之下,二进制格式就难懂多了。
17、当用管道连接多个进程时,<与>分别重定向哪个进程的标准输入、哪个进程的标准输出?
<会把文件内容发送到流水线中第一个进程的标准输入,>会捕获流水线中最后一个进程的标准输出。
18、两个相连的小工具需要用括号括起来。
19、每条数据流用一个指向文件的指针指示,用fopen()创建新数据流。
20、fopen()函数接收两个参数:文件名和模式,共三种模式:w,r,a。

FILE  *in_file = fopen("input.txt","r");

21、文件流创建后,可以用fprintf()往数据量中打印数据,用fscanf()从文件中读取数据。

fprintf(out_file,"不要穿%s色的衣服和%s色的裤子","红","绿");
   fscanf(in_file,"%79[^\n]\n",sentence);

使用完后需要关闭:

fclose(in_file);
fclose(out_file);

22、数据流的数量取决于操作系统,一般一个进程最多有256条数据流。
23、FILE最早用宏定义,宏的名称都要大写。
24、main()函数的第二种形式:(grac用来记录数组中元素的个数)

int main(int argc,char *argv[ ]){  }

25、用户运行程序时,命令行中第一个参数是程序名。
26、ps -ae //显示所有进程,包括后台运行的进程

tail -f logile.out  //持续显示文件末尾新添加的数据。

27、库函数getopt(),用来简化处理过程,需要unistd.h头文件,其不属于C标准库,而是POSIX库中的一员。POSIX的目标是创建一套能够在所有主流操作系统上运行的函数。
28、getopt()工作:

rocket_to -e 4 -a Brasilia Tokyo London

4指使用四台引擎 -e代表“引擎” -a代表“无敌模式”
29、
在这里插入图片描述
ae告诉getopt()函数“a和e是有效选项”,e后面的冒号表示“-e后面需要再跟一个参数”,getopt()会用optarg变量指向这个参数。
30、两个选项可以合并并且改变顺序:可以用-td now 代替-d now -t
31、读取完全不选项后,应该用optind变量跳过它们。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值