20155334 2017-2018-1《信息安全系统设计基础》第四周学习总结
20155334 2017-2018-1《信息安全系统设计基础》第四周学习总结
课后实践任务:
1. 参考教材第十章内容
2. 用Linux IO相关系统调用编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能,注意XXX是文件名,通过命令行传入,不要让用户输入文件名。
3. 不要把代码都写入main函数中。
4. 要分模块,不要把代码都写入一个.c中。
5. 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息。
步骤:
创建文件smyod.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#define M 100
void tx(int fd);
void tc(int fd);
int main(int argc,char *argv[])
{
int fd;
if((fd=open(argv[1],O_RDONLY,0))==-1)
printf("无法读取该文件\n");
else
{
tc(fd);
close(fd);
fd=open(argv[1],O_RDONLY,0);
tx(fd);
close(fd);
}
}
void tc(int fd)
{
int i, a;
char ch[M];
printf("原文件输出为:\n");
while((a=read(fd,ch,16))!=0){
for(i=0;i<a;i++)
{
if(ch[i]=='\n')
printf(" \\n");
else
printf("%4c",ch[i]);
}
printf("\n");
}
}
void tx(int fd)
{
int i, a;
char ch[M];
printf("16进制输出为:\n");
while((a=read(fd,ch,16))!=0){
for(i=0;i<a;i++)
{
if(ch[i]=='\n')
printf(" 0a");
else
printf("%4x",ch[i]);
}
printf("\n");
}
}
创建所要打开的文本文件:
cao
xiang
besti
5334
将编译后的文件进行运行:
编辑显示文档前两行的head程序:
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
int main(int argc,char*argv[])
{
FILE *fp=fopen(argv[2],"r");
int i, j;
char ch;
j=atoi(argv[1]);
for(i=0;i<j;i++)
{
do
{
ch=fgetc(fp);
putchar(ch);
}while(ch!='\n'&&ch!=EOF);
}
fclose(fp);
}
同理编写显示后两行的tail程序:
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
int main(int argc,char*argv[])
{
FILE *fp=fopen(argv[2],"r");
int len;
char ch;
len=atoi(argv[1]);
int m=0;
do{
ch=fgetc(fp);
if(ch=='\n')
m++;
}while(ch!=EOF);
fclose(fp);
int i=0;
FILE *fp2=fopen(argv[2],"r");
for(i;i<m;)
{
ch=fgetc(fp2);
if(i>=m-len)
{
putchar(ch);
}
if(ch=='\n')
i++;
}
fclose(fp2);
return 0;
}
编译后运行结果:
、
代码托管
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 75/75 | 1/1 | 5/0 | |
第二周 | 135/210 | 1/2 | 4/9 | |
第三周 | 234/444 | 1/3 | 6/15 | |
第四周 | 486/930 | 1/4 | 8/23 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:XX小时
-
实际学习时间:XX小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)