20155219实践题目实现od命令
实践题目
编写MyOD.c 用myod XXX实现Linux下od -tx -tc XXX的功能
od的功能:
od命令用于将指定文件内容以八进制、十进制、十六进制、浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直接显示在终端的字符。
选项-t:指定输出格式,格式包括a、c、d、f、o、u和x。
参数x[SIZE]:十六进制,SIZE字节为单位以十六进制输出。
od -tx XXX是以十六进制输出XXX的内容,默认以四字节为一组显示。(XXX中字符对应的ascii值的十六进制表示,且每四字节显示的顺序是字符从后向前的顺序)
遇到的问题
- 1.如何输出行号?
通过观察发现,每行开头这串数字为八进制,数值为在本行之前的字符数。所以,只需在prinf()函数中格式化输出printf("%07o",参数)即可。
- 2.发现程序无法显示“\n”的ASCII字符导致与od命令不完全相符?
对读取的字符进行判断,如遇到“\n”,手动输出。要注意使用转义字符,即printf("\n")。对于最后一行的序号即为i的个数,是一个计数功能,其个数比字符数多1,因为将换行符也计入其中。
但是仍出现如下错误,如图:
想到一个方法:在每个字符输出之后做一个判断如果下一个字符输出是‘\0’,则手动输出‘\n’。但遇到如下错误,如图:
仍在想解决办法。
- 3.如何输出两行不同形式的字符
在输出行号的同时使用一个for循环将刚刚输出的字符的ASCII码值再重新输出一遍。
- 4.输出遇到如下问题,最后一行无法输出其ASCII码的值,如图:

解决方法:在程序结尾处新加一个for循环,开头引入新的变量h,用于计数本行字符的个数。
程序如下:
#include <stdio.h>
#define m 1000
int main()
{
int i=0,j=0,g,h=0;
char fileName[100];
char str[m],temp[m];
printf("od filename:");
gets(fileName);
FILE *in=fopen(fileName,"r");
if (in==NULL)
{
printf("Error 404: Object not found!");
}
else
{
printf("%07o",0);
printf(" ");
while(!feof(in))
{
fscanf(in,"%c",&str[i]);
if (j%16==0&&j!=0)
{
printf("\n");
printf(" ");
for(g=i-h;g<i;g++)
{
printf("%x ",str[g]);
}
printf("\n");
printf("%07o",j);
printf(" ");
}
printf("%c ",str[i]);
i++;
if(str[i+1]=='\n')
{printf("\\n");}
j++;
h++;
if(h==17)
h=1;
}
printf(" ");
for(g=i-h;g<i;g++)
{
printf("%x ",str[g]);
}
}
fclose(in);
printf("\n");
printf("%07o",i);
printf("\n");
return 0;
}
最终截图:
20155219实践题目实现od命令的更多相关文章
- linux之od命令
od [OPTION]... [FILE]... 把文件用8进制或者其他的格式显示出来.通常用于查看特殊格式文件的内容. 这个命令默认把文件的内容用八进制的形式清晰地写在标准输出上.如果是多个文件 ...
- [转]Linux之od命令
转自:http://os.51cto.com/art/200912/173136.htm 随着计算机飞速的发展,很多人开始学习Linux,怎样才能学好Linux,一定要学好Linux的命令.学习Lin ...
- linux下hexdump和od命令:显示文件十六进制格式
Linux指令: od 示例用法: od -c hello Linux指令: od od命令用户通常使用od命令查看特殊格式的文件内容.通过指定该命令的不同选项可以以十进制.八进制.十六进 ...
- linux od命令
用户通常使用od命令查看特殊格式的文件内容.通过指定该命令的不同选项可以以十进制.八进制.十六进制和ASCII码来显示文件.od命令系统默认的显示方式是八进制,这也是该命令的名称由来(Octal Du ...
- MongoDb进阶实践之六 MongoDB查询命令详述(补充)
一.引言 上一篇文章我们已经介绍了MongoDB数据库的查询操作,但是并没有介绍全,随着自己的学习的深入,对查询又有了新的东西,决定补充进来.如果大家想看上一篇有关MongoDB查询的 ...
- MyOD-Linux od命令的实现
MyOD 一.设计思路 确定MyOD的要求 根据需求可知MyOD需要实现类似Linux下 od -tx -tc XXX的功能,于是先去网上查找了一下od命令的-tx以及-tc参数的作用,经查找后了解到 ...
- linux od命令详解
Linux od命令 Linux od命令用于输出文件内容.od指令会读取所给予的文件的内容,并将其内容以八进制字码呈现出来 将指定文件以八进制形式(默认)转储到标准输出.如果指定了多于一个的文件参数 ...
- Linux od命令(以指定进制显示文件)
从“读取二进制文件”出发,到od命令的使用 在桃村实习期间,一直努力做毕业设计,我的毕业设计中有一个内容就是读取SEGY文件.在读取文件时,经常遇到的问题时你要读取浮点型数据,这时你就必须考虑你所使用 ...
- Linux必知必会——od命令
1.功能 od命令用于将指定文件内容以八进制.十进制.十六进制.浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直接显示在终端的字符.od命令系统默认的显示方式是八进制,名称源于Oc ...
随机推荐
- Apache升级PHP教程(以5.3.3升级到5.6.30为例)
最简单的LAMP环境搭建当然是通过yum来安装,但由于镜像仓库中的软件版本更新较慢,经常会遇到版本过旧的问题,尤其是安装一些新版本的CMS时的PHP. 这时我们需要手动编译PHP,Linux编译安装经 ...
- fiddler 抓包配置
1.我们安装完成后点击运行程序,就可以看到如下图,这是进入Fildder的第一个界面. 2.安装好后打开fiddler→选择 Tools >Fildder Options > Https ...
- Zabbix3.4.7监控windows进程
1.首先,找到要监控进程的主机 创建新的监控项 然后应用集选择processes,点击添加,此处是以zabbix_agentd.exe为例添加 2. 为此监控项添加触发器 注意触发器表达式的编写,上面 ...
- 【Junit_Ant】使用Eclipse自带的Junit和Ant,生成测试报告
使用Eclipse自带的Junit和Ant,生成测试报告 1.点击要测试的工程,右击,选择Export 2.在弹出的页面里,点击General,选择Ant Buildfiles,点击Next 3.在下 ...
- 服务注册和发现(Consul)
使用Consul提供注册和发现服务 什么是 Consul Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其它分布式服务注册与发现的方案,Consul ...
- centos7 克隆 网卡无法启用
1.克隆后查看网卡无法启用,报错信息如下: Apr :: agent systemd: network.service: control process exited, code=exited sta ...
- 二:通过VirtualBox+Vagrant创建一个centos的虚拟机:
官网安装VirtualBox及Vagrant. 下载centos7,添加到vagrant中. http://e-proxy.yfb.sunline.cn/download/vagrant/centos ...
- bind配置文件
options{} - 整个bind使用的全局配置选项 bind监听的端口,数据文件存储位置,缓存的存储位置,权限加密的控制 logging{}- 服务日志选项 日志输出的位置,以及输出的级别 zon ...
- SQL-13 从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t。
题目描述 从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t.CREATE TABLE IF NOT EXISTS "titles" ( ...
- L314 单音节词读音规则(二)-元音字母发音规则
1 单个元音发音尽量拖音一下(2S),发音会饱满一些. 2开音节: 辅音(辅组)(没有)+元音+辅音+e 的单词其中:元音发字母本身音,辅音字母不为r , 字母e不发音. 相对开音节:第一个元音都发字 ...