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

myod

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

两条指令

  • man -k key1|grep key2|grep 2
    1071478-20171015225651324-1343487731.png

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

  • grep -nr XXX /usr/include
    1071478-20171015225705684-1081391064.png

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

head&tail

需求分析

  • 翻阅资料

通过

man 1 head
man 1 tail

可以查到相应的帮助文档
1071478-20171015225732793-291097407.png

1071478-20171015225745512-710849476.png

简而言之就是: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
    原本指令的结果
    1071478-20171015225916121-1686965746.png

1071478-20171015225931590-970070208.png

我的myhead的结果

1071478-20171015225946902-32693264.png

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

1071478-20171015230010652-1957594544.png

  • tail

原本指令的结果

1071478-20171015230041121-1032315098.png

1071478-20171015230049137-88921297.png

我的mytail的结果

1071478-20171015230101793-1113603698.png

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

1071478-20171015230149121-456539102.png

出现过的问题

  • 问题1:输出行数过多

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

1071478-20171015230207387-1372050580.png

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

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

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

1071478-20171015230218121-605267960.png

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

第十章

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

csapp.h
csapp.c

学习进度条

代码行数(新增/累积)博客量(新增/累积)学习时间(新增/累积)重要成长
目标5000行16篇400小时
第一周9/91/119/19熟练下载安装技能,锻炼解决问题能力
第2周380/3892/326/451、7章
第3,4周1270/16593/6422、10章

转载于:https://www.cnblogs.com/GDDFZ/p/7674820.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值