2017-2018-1 20155305 《信息安全系统设计基础》第四周学习总结(课堂提交作业未来得及提交码云链接myod补充博客)
2017-2018-1 20155305 《信息安全系统设计基础》第四周学习总结(课堂提交作业未来得及提交码云链接myod补充博客)
课堂提交题目要求
编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能
代码码云链接补交
- 源代码main函数
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include"head.h"
int main(int argc,char *argv[])
{
int i;
int n1=0,n2=0,n3=0,n4=0;
for(i=1;i<argc-1;i++)
{
switch(argv[i][2])
{
case 'c':n1=1;break;
case 'x':n2=1;break;
case 'd':n3=1;break;
case 'o':n4=1;break;
}
}
int fd=10;
fd=open(argv[argc-1],O_RDONLY,0);
//printf("%d",fd);
if(fd==-1){printf("Error!\n");exit(1);}
myod(fd,n1,n2,n3,n4);
close(fd);
return 0;
}
- 源代码myod.c
#include<stdio.h>
#include<unistd.h>
void myod(int fd,int n1,int n2,int n3,int n4)
{
char ch,line[16];
int i;
int a=0;
int j=0;
while(read(fd,&ch,1)!=0){
line[j%16]=ch;
if((j+1)%16==0){
printf("%07o ",16*a);
a++;
if(n1){for(i=0;i<16;i++)
{
if(line[i]=='\n')
{printf("%5s","\\n");continue;}
if(line[i]=='\t')
{printf("%5s","\\t");continue;}
putchar(line[i]);
putchar(' ');
putchar(' ');
putchar(' ');
putchar(' ');
}
putchar('\n');}
if(n2){printf(" ");for(i=0;i<16;i++)
{
if(line[i]=='\n')
{printf("0%-4x",'\n');continue;}
if(line[i]=='\t')
{printf("0%-4x",'\t');continue;}
printf("%-5x",line[i]);
}
putchar('\n');
}
if(n3){printf(" ");for(i=0;i<16;i++)
{
if(line[i]=='\n')
{printf("%-5d",'\n');continue;}
if(line[i]=='\t')
{printf("%-5d",'\t');continue;}
printf("%-5d",line[i]);
}
putchar('\n');
}
if(n4){printf(" ");for(i=0;i<16;i++)
{
if(line[i]=='\n')
{printf("%-5o",'\n');continue;}
if(line[i]=='\t')
{printf("%-5o",'\t');continue;}
printf("%-5o",line[i]);
}
putchar('\n');
}
}
j++;
}
}
课堂题目理解
od的功能(参考Linux od命令详细介绍及用法实例):
od命令用于将指定文件内容以八进制、十进制、十六进制、浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直接显示在终端的字符。
选项-t:指定输出格式,格式包括a、c、d、f、o、u和x。od -tx XXX是以十六进制输出XXX的内容,默认以四字节为一组显示。(XXX中字符对应的ascii值的十六进制表示,且每四字节显示的顺序是字符从后向前的顺序)截图如下:

od -tx -tc XXX就是在十六进制输出其ascii值的同时,显示对应的文件内容,-tx和-tc的前后顺序决定了文本内容和十六进制ascii值的上下顺序。截图如下:

od -tc -tx1 XXX是每列输出一个字节,打印文件内容和对应的十六进制ascii值(题目要求理解后编写MyOD实现此功能)。截图及和上面功能对比如下:

题目截图

2017-2018-1 20155305 《信息安全系统设计基础》第四周学习总结(课堂提交作业未来得及提交码云链接myod补充博客)的更多相关文章
- 20135328信息安全系统设计基础第一周学习总结(Linux应用)
学习计时:共xxx小时 读书: 代码: 作业: 博客: 一.学习目标 1. 能够独立安装Linux操作系统 2. 能够熟练使用Linux系统的基本命令 3. 熟练使用Linux中用户管理命令/ ...
- 20135328信息安全系统设计基础第二周学习总结(vim、gcc、gdb)
第三周学习笔记 学习计时:共8小时 读书:1 代码:5 作业:1 博客:7 一.学习目标 熟悉Linux系统下的开发环境 熟悉vi的基本操作 熟悉gcc编译器的基本原理 熟练使用gcc编译器的常用选项 ...
- 2017-2018-1 20155232 《信息安全系统设计基础》第十周课堂测试(ch06)补交
# 2017-2018-1 20155232 <信息安全系统设计基础>第十周课堂测试(ch06)补交 上课时完成测试后在提交的时候,没有提交成功,进行补交. 1.下面代码中,对数组x填充后 ...
- 2017-2018-1 20155330 《信息安全系统设计基础》第10周课堂测试&课下作业
2017-2018-1 20155330 <信息安全系统设计基础>第10周课堂测试&课下作业 stat命令的实现-mysate 学习使用stat(1),并用C语言实现 提交学习st ...
- 2017-2018-1 20155318 《信息安全系统设计基础》第2周课堂实践、makefile、以及myod
2017-2018-1 20155318 <信息安全系统设计基础>第2周课堂实践.makefile.以及myod 测试3-gdb测试 用gcc -g编译vi输入的代码 在main函数中设置 ...
- LINUX信息安全系统设计基础第一周学习总结
Linux系统简介 一.实验内容 了解 Linux 的历史,Linux 与 Windows 的区别等入门知识. 二.实验要求 阅读linux简介与历史 三.实验步骤 二.Linux 与 Window ...
- LINUX信息安全系统设计基础第二周学习总结
1 Linux命令 2 man命令 1.Terminal(终端) Linux 系统还提供了一个叫做终端模拟器的程序(Terminal),下面几个比较常见的终端模拟器,例如 gnome-terminal ...
- 2019-2020-1 20175223 《信息安全系统设计基础》MyOD
目录 一.要求 二.设计流程 1. 需求分析 2. 概要设计 伪代码 3. 详细设计 main.c tans_0x.c tans_pr.c tansp.h 三.编写Makefile,并制作动.静态库 ...
- 20155305《信息安全系统设计基础》10月18日课堂 fork,exic,wait
20155305<信息安全系统设计基础>10月18日课堂 fork,exic,wait fork()函数 1.fork函数作用 一般来讲, 我们编写1个普通的c程序, 运行这个程序直到程序 ...
随机推荐
- PyQt4(简单信号槽)
import sys from PyQt4 import QtCore, QtGui class myWidget(QtGui.QWidget): def __init__(self): super( ...
- 【Java】操作Sqlite数据库
首先在https://github.com/xerial/sqlite-jdbc下载jar包 import java.sql.Connection; import java.sql.DriverMan ...
- Mysql中的delimiter详解
初学mysql时,可能不太明白delimiter的真正用途,delimiter在mysql很多地方出现,比如存储过程.触发器.函数等. 学过oracle的人,再来学mysql就会感到很奇怪,百思不得其 ...
- 数据可视化d3.v4.js
<html> <head> <meta charset="utf-8"> <title>做一个简单的条形图</title> ...
- leetCode题解之反转字符串中的元音字母
1.问题描述 Reverse Vowels of a String Write a function that takes a string as input and reverse only the ...
- 在 Azure VM 上安装 LAMP Web 服务器
本文逐步讲解如何在 Azure 中的 Ubuntu VM 上部署 Apache Web 服务器.MySQL 和 PHP(LAMP 堆栈). 如果想要部署 NGINX Web 服务器,请参阅 LEMP ...
- Linux的Transparent Hugepage与关闭方法
Transparent HugePages是在运行时动态分配内存的,而标准的HugePages是在系统启动时预先分配内存,并在系统运行时不再改变. 因为Transparent HugePages是在运 ...
- 封装NSMapTable并简易的使用
封装NSMapTable并简易的使用 NSMapTable是弱引用的字典,可以用来存储对象,该对象消失了也没有关系,对于控制器越级跳转相当有用:) WeakDictionary.h 与 WeakDic ...
- Linux chkconfig命令详解
chkconfig命令检查.设置系统的各种服务.这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务.谨记chkconfig不是 ...
- 剑指offer 11二进制中1的个数
输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. java版本: public class Solution { public int NumberOf1(int n) { Strin ...