20155219 2017-2018-1 《信息安全系统设计》第4周学习总结
2017-10-15 11:24
288 查看
20155219 2017-2018-1 《信息安全系统设计》第4周学习总结
myod的改进
要求:1.用Linux IO相关系统调用编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能,注意XXX是文件名,通过命令行传入,不要让用户输入文件名
不要把代码都写入main函数中
要分模块,不要把代码都写入一个.c中
解答:
我写了两个版本
版本一:将上次我写的myod1进行了修改。修改后:用户在命令行中输入指令,并且添加了函数txtc()。运用的函数是fopen,运行结果如下图所示:
局限:只能做类似于od tx tc的命令,其他的命令无法灵活性实现。
版本2:运用了函数open和read,通过系统调用了解它们的用途如下:
灵活运用这两个函数得到change函数主体如下:
while((m=read(flag,ch,16))!=0) { for(i=0;i<m&&ch[i]!='\n';i++) { printf("%4c",ch[i]); } printf("\n"); for(i=0;i<m&&ch[i]!='\n';i++) { printf("%4x",ch[i]); }
一开始得到的粗略显示如下:
之后进行调整,令其显示行号并且将换行符“\n”用符号表示而不是换行。调整之后的输出为如下图:
相比较与版本一,当时还不太熟悉文件的打开与读出总有许多的问题,当我熟悉了相关内容在进行版本二的开发时就轻松了许多。
head、tail命令
通过man head和man tail命令可以看到如下图关于两条命令的显示:它们的应用过程如下:
之后自己编写代码进行实现:
1.tail命令
伪代码如下:
void head(包含文件内容的数组str「」,数组长度num,命令行中输入的数字n)//打印倒数n行 { for(i=0;i<n;i++) { 收集换行符,统计个数j; } for(i=0;i<j;i++) { 收集换行符,直到第j-n个; } 输出之后的n行即可; }
代码如下:
#include <stdio.h> #include <stdlib.h> #include <string.h> void head(char text[], int size,int n)//top 10 { int i,j=0; for(i=0;i<size&&j<n;i++) { if(text[i]!='\n') { printf("%c",text[i]); } else{j++; printf("\n"); } } }
2.head命令
代码如下:
#include <stdio.h> #include <stdlib.h> #include <string.h> void tail(char text[], int size,int n)//tail 10 { int i,j=0,k; for(i=size;i>0&&j<=n;i--) { if(text[i]=='\n') { j++; //printf("%c",text[i]); } } for(k=i+2;k<=size;k++) { printf("%c", text[k]);} }
正确之后的运行与实现如下图:
代码调试过程中遇到的问题:
1.一开始一直出现如下图的错误:解决方案:是因为argv[]命令行输入的数字是以字符进行保存的,故需要用aoti函数进行转化即可。
简单-cp *** ***的c语言实现(简单版)(使用系统调用版)
只显示主要内容
fd=open(argv[1],O_RDONLY,0); if(fd==-1) printf("error\n"); int size=read(fd,&ch,buffersize); fd1=creat(argv[2],copymode); if(fd1==-1) printf("error\n"); /*for(i=0;i<size;i++) { printf("%c",ch[i]); }*/ write1=write(fd1,&ch,size); if(write1!=size) printf("error\n"); close(fd1); close(fd);
实现成功。
代码托管
代码提交过程截图:学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 95/95 | 1/1 | 8/8 | 学习了gcc与gdb的使用 |
第二周 | 95/95 | 1/1 | 12/20 | 学习了myod相关内容 |
第三周 | 95/95 | 1/1 | 12/32 | 学习了信息的表示和处理 |
第四周 | 170/265 | 2/4 | 12/40 | 完善学习了myod即head,tail等命令 |
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
参考:软件工程软件的估计为什么这么难,软件工程 估计方法
计划学习时间:10小时
实际学习时间:12小时
改进情况:
有空多看看现代软件工程 课件 软件工程师能力自我评价表
相关文章推荐
- 20155219 2017-2018-1 《信息安全系统设计》第3周学习总结
- 20155212 2017-2018-1 《信息安全系统设计》第1周学习总结
- # 2017-2018-3 20155337《信息安全系统设计基础》第4周学习总结
- 2017-2018-1 20155322 《信息安全系统设计》第一周学习总结
- 20155219 2016-2017-2 《Java程序设计》第4周学习总结
- 20155322 2017-2018-1《信息安全系统设计》第七周学习总结
- 2017-2018-1 20155202 《信息安全系统设计基础》第4周学习总结
- 2017-2018-1 20155319 《信息安全系统设计基础》第4周学习总结
- 2017-2018-1 20155219 《信息安全系统设计基础》第7周学习总结
- # 2017-2018-1 20155231 《信息安全系统设计基础》第4周学习总结
- 2017-2018-1 20155219 《信息安全系统设计基础》第8周学习总结
- 2017-2018-1 20155212 《信息安全系统设计基础》第4周学习总结
- # 2017-2018-1 20155219 《信息安全系统设计基础》第5周学习总结
- 20155219 2017-2018-1 《信息安全系统设计》第4周课堂实践
- 2017-2018-1 20155311 《信息安全系统设计基础》第4周学习总结
- 2017-2018-1 20155219《信息安全系统设计基础》第1周学习总结
- 2017-2018-1 20155306 《信息安全系统设计基础》第4周学习总结
- 20155212 2017-2018-1 《信息安全系统设计》第10周学习总结
- 2017-2018-1 20155219 《信息安全系统设计基础》第6周学习总结