20155325 2017-2018-1 《 信息安全系统设计基础》第四周学习总结

myod

单独开了篇博客,如下:
对Linux命令od -tc -tx1的C语言程序实现myod-优化版

两条指令

  • man -k key1|grep key2|grep 2

“key1|grep key2|grep 2”都是关键字

  • grep -nr XXX /usr/include

可用于查找宏 :“n”,显示行;“r”某目录下递归调用;“XXX”宏名

head&tail

需求分析

  • 翻阅资料

通过

man 1 head
man 1 tail

可以查到相应的帮助文档

简而言之就是:head输出文件开始的部分,tail输出文件后面的部分

  • 我实现的内容是:

head:默认输出前十行,加上“-数字h”则输出后h行,h超出文本总行数则输出全部文本。
tail:默认输出后十行,加上“-数字h”则输出后h行h超出文本总行数则输出全部文本。

伪代码

  • head

1.测试是否输入正确,错误则报错退出

2.分析输入数据。

 默认状况下令输出行数为10,当对输出行数有了限制,将“-”后面的数字剥离出,用aoti()转化为整型,视作输出行数。

3.输出——用“(h<output_h)&&(h<num_h)”限制输出行数。

   默认状况下令输出行数为10,文件不足10行时输出全部文本,对输出行数有限制时输出限制行数。
  • tail
    整体和head差不多,只是在限制输出时与head有所不同——顺序输出后面部分。
    用“int h=num_h-output_h;”h是否大于0来使输出在合理范围内

产品代码

myhead
mytail

测试

然而我并不知道这个改怎么测试,所以做了测试截图

  • head
    原本指令的结果

我的myhead的结果

在同样环境下比对系统原有的指令,与其结果一致

  • tail

原本指令的结果

我的mytail的结果

在同样环境下比对系统原有的指令,与其结果一致

出现过的问题

  • 问题1:输出行数过多

  • 解决: 通过添加一些代码找到了原因,即下面被注释掉的代码。因为当时忽略了字符转整型应该-48。

  • 问题2:不知道怎么判定命令行输入的是默认还是限制行数

  • 解决: 通过判定argv[2][0]是否是“-”来判定是否限制行数

  • 问题3:输出行数错误或无输出

  • 解决: 上面对output_h的赋值有问题,当想输出不止个位数的行数,则只会输出前一位。所以我又做了一个myAtoi()把除了“-”的部分转化为整型。

第十章

  • 问题:出现了一个头文件<csapp.h>,无法找到。
  • 解决:经查资料后得知,csapp.h和csapp.c都是本书作者编的,导入即可。
    参考链接为: 在Ubuntu下使用 csapp.h 和 csapp.c
    由于它的对源文件的链接已打不开,找了同学要了一份,链接如下

csapp.h
csapp.c

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 16篇 400小时
第一周 9/9 1/1 19/19 熟练下载安装技能,锻炼解决问题能力
第2周 380/389 2/3 26/45 1、7章
第3,4周 1270/1659 3/6 42 2、10章
posted @ 2017-10-15 23:07  难能可贵成功犯傻  阅读(194)  评论(0编辑  收藏  举报