2017-2018-1 20155314 《信息安全系统设计基础》第4周学习总结
2017-2018-1 20155314 《信息安全系统设计基础》第4周学习总结
课堂实践——myod-系统调用版本
实践内容
-
参考教材第十章内容
-
用Linux IO相关系统调用编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能,注意XXX是文件名,通过命令行传入,不要让用户输入文件名
-
不要把代码都写入main函数中
-
要分模块,不要把代码都写入一个.c中
-
提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息
-
课上上传代码到码云
我的代码
原版myod
#include<stdio.h>
#include<stdlib.h>
void myod(char *f);
int main(int argc,char *argv[]){
myod(argv[1]);
return 0;
}
void myod(char *f){
FILE *fp;
char ch;
char str[16];
int i=0,j,count=0;
if((fp=fopen(f,"r"))==NULL){
printf("ERROR!\n");
exit(0);
}
while((ch=fgetc(fp))!=EOF){
str[i]=ch;
i++;
if(i==16){
i=0;
printf("%07o ",count);
for(j=0;j<16;j++){
if(str[j]=='\n') printf("\\n ");
else printf("%-4c",str[j]);
count++;
}
printf("\n");
printf(" ");
for(j=0;j<16;j++)
printf("%02x ",str[j]);
printf("\n");
}
}
printf("%07o ",count);
for(j=0;j<i;j++){
if(str[j]=='\n') printf("\\n ");
else printf("%-4c",str[j]);
count++;
}
printf("\n");
printf(" ");
for(j=0;j<i;j++)
printf("%02x ",str[j]);
printf("\n");
printf("%07o ",count);
printf("\n");
fclose(fp);
}
Linux系统级I/O版myod20155314
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<unistd.h>
void myod20155314(char *f);
int main(int argc,char *argv[]){
myod20155314(argv[1]);
return 0;
}
void myod20155314(char *f){
//FILE *fp;
int fd;
fd=open(f,O_RDONLY,0);
char ch;
char str[16];
int i=0,j,count=0;
/*if((fp=open(f,"r"))==NULL){
printf("ERROR!\n");
exit(0);
}*/
if(fd==-1){
printf("ERROR!\n");
exit(0);
}
while(read(fd,&ch,1)!=0){
str[i]=ch;
i++;
if(i==16){
i=0;
printf("%07o ",count);
for(j=0;j<16;j++){
if(str[j]=='\n') printf("\\n ");
else printf("%-4c",str[j]);
count++;
}
printf("\n");
printf(" ");
for(j=0;j<16;j++)
printf("%02x ",str[j]);
printf("\n");
}
}
printf("%07o ",count);
for(j=0;j<i;j++){
if(str[j]=='\n') printf("\\n ");
else printf("%-4c",str[j]);
count++;
}
printf("\n");
printf(" ");
for(j=0;j<i;j++)
printf("%02x ",str[j]);
printf("\n");
printf("%07o ",count);
printf("\n");
//fclose(fp);
close(fd);
}
运行截图
代码调试中的问题和解决过程
- 问题1:
git add .
时报错:fatal: Not a git repository (or any of the parent directories)
- 解决方案:这是由于本地版本管理仓库被删除了,需要用
git init
命令重新初始化仓库,建立新的仓库:
- 问题2:
git push
时报错:fatal: The current branch master has no upstream branch.
- 解决方案:利用
git push -u origin master -f
命令强制覆盖已有的分支后再push,push成功:
代码托管
上周考试错题总结
结对及互评
本周结对学习情况
- 20155323
- 结对学习内容
- 教材第1章 计算机系统漫游
其他(感悟、思考等,可选)
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:5小时
-
实际学习时间:2小时