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小时

  • 改进情况:

(有空多看看现代软件工程 课件
软件工程师能力自我评价表
)

参考资料

posted @ 2017-10-15 22:51  T_T>_<20155334  阅读(146)  评论(1编辑  收藏  举报