myod中遇到的问题
一、准备工作
首先在编程之前遇到的第一个问题就是要了解需要编出一个怎样的代码,了解od -tx -tc的具体意思,并观察其输出结果.
-tc代表着输出ASCII字符,而-tx则是代表着输出ASCII字符所对应的16进制数字,-tx后面一般会跟数字,代表着输出字节数.

二、问题及解决方法
问题1:
题目中明确要求用myod XXXX实现这一功能,开始的程序我是通过写入文件名然后读取文件的,和题目要求略不符合。
解决1:
通过查阅资料我了解到了open函数的使用,以及int main(int argc,int argv[])的使用,这都是之前编程中很少接触到的,argc是命令行总的参数个数 ,argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数.用好这两个变量就可以使用命令行后面跟的用户输入的参数,也就可以按照上面的样式获取文件路径.而open函数则是linux中非常方便的按照给定路径打开文件的函数.

就像图中的那样,设置参数为O_RDONLY只读模式,但是要注意open的特别头文件:#include <sys/types.h>、#include<sys/stat.h>、#include<fcntl.h>、#include<unistd.h>。
至于编程的其他方面相对顺利,没有什么问题,除了刚刚已经展示出来的主函数外,还有一个myod.c文件,以及一个head.h的头文件,分别如下:


程序运行的展示:

基本与od功能相同
问题2:
第二个问题出现在makefile时,上网查询发现写makefile文件需要在语句前加上[Tab],但是在make时还是会报错:

解决2:
makefile的编写语句前确实需要[Tab],但是只有在动作行才加,而目标行不加,也就是说应当是这样的效果:

这样就可以成功执行make。
三、还未完成的问题
最后有一个还未完成的项目,od实际上并不仅仅只有这几个功能,通过man od我们可以看到od还有许多功能,就单说od -tx的功能我就没有完全实现,毕竟后面的数字不同可以输出不同的字节数,而当前程序只能输出一字节,而且od -tc -tx与od -tx -tc输出的顺序也不相同,而我的程序目前输出顺序固定,这都是接下来需要完善的地方。
myod以及makefile的全部代码在:https://gitee.com/PuPuTongTong/myod-makrfile/tree/master 。
myod中遇到的问题的更多相关文章
- MyOD-Linux od命令的实现
MyOD 一.设计思路 确定MyOD的要求 根据需求可知MyOD需要实现类似Linux下 od -tx -tc XXX的功能,于是先去网上查找了一下od命令的-tx以及-tc参数的作用,经查找后了解到 ...
- Python开源框架
info:更多Django信息url:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC) ...
- 20155215 第二周测试1 与 myod
课堂测试 第一题 每个.c一个文件,每个 .h一个文件,文件名中最好有自己的学号 用Vi输入图中代码,并用gcc编译通过 在Vi中使用K查找printf的帮助文档 提交vi编辑过程截图,要全屏,包含自 ...
- 20155306 2017-2018-1《信息安全系统设计》第二周课堂测试以及myod的实现
20155306 2017-2018-1<信息安全系统设计>第二周课堂测试以及myod的实现 第二周课堂测验: (注:前两项在课堂已提交,在此不做详解) 第一项: 每个.c一个文件,每个. ...
- 20175208 张家华 MyOD
一.实现目的: 编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 二.功能简介 1.Linux下的od功能是将指定文件内容以八进制.十进制.十六进 ...
- 20175314薛勐 MyOD(课下作业,选做)
MyOD(课下作业,选做) 要求 编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 思路 伪代码: 读取命令行输入的参数(文件名) 以16为每个字 ...
- MyOD 代码实现
MyOD的代码实现 一.题目要求: 编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 二.设计思路 OD命令详解: 因此,该题目所要实现的功能为以 ...
- 课后选做题:MyOD
目录 OD命令了解 MyOD实现 OD命令了解 作用:od命令用于输出文件的八进制.十六进制或其它格式编码的字节,通常用于显示或查看文件中不能直接显示在终端的字符.常见的文件为文本文件和二进制文件.此 ...
- 实现mypwd&mybash&myod&读者写者
目录: 一.mypwd 二.mybash 三.myod 四.读者.写者 一.实现mypwd 学习pwd命令 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 实现mypwd 测试m ...
随机推荐
- linux系统之间基于密钥对免输入密码登陆
通常,我们登陆到一台linux主机是需要输入密码,这样可以验证登陆者的身份. 这篇随笔里面我打算记录一下配置基于ssh密钥对登陆系统.在配置之前先和大家说明一下我遇到过的问题:刚接触到linux时候首 ...
- js验证金额是否符合要求的正则表达式
正则的只是就不在这里重复的讲了,直接上代码 var mny = /^(((([1-9]([0-9]{0,8}))|0)\.([0-9]{1,2}))|([1-9]([0-9]{0,8})))$/; m ...
- P1009 阶乘之和
P1009 阶乘之和 题目提供者洛谷OnlineJudge 标签数论(数学相关)高精1998NOIp提高组NOIp普及组 难度普及- 通过/提交1139/3791 提交该题 讨论 题解 记录 题目描述 ...
- Intersection(计算几何)
Intersection Time Limit: 4000/4000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others)To ...
- full stack on the road
Full Stack, I'm coming. 有人说全栈只是个理想情况,但我不这么认为,因为好多思想是想通的, 比如 OO.函数式编程.设计模式... 也有人说搞全栈的人样样普通,可是为嘛我在学习j ...
- Springboot整合日志时候出现的问题
上图是问题,按照路径去找下,发现其实是jar包重复导致的! 在对应的项目上,右键--->属性(Properties)--->JavaBuild Path 然后选择Libraries 页签 ...
- NSTheard 详解
一.什么是NSThread NSThread是基于线程使用,轻量级的多线程编程方法(相对GCD和NSOperation),一个NSThread对象代表一个线程, 需要手动管理线程的生命周期,处理线程同 ...
- [JavaScript]WebBrowser控件下IE版本的检测
转载请注明原文地址:https://www.cnblogs.com/litou/p/10772272.htm 在客户端检查用户使用的浏览器类型和版本,都是根据navigator.userAgent属性 ...
- python初学者总结
学习python首先配置好工作环境,因为不同版本之间的python是不兼容了 原创:01coding.com win7安装环境过程: 1:下载python 建议下载两个不同版本官方已给出 https: ...
- QT5的QDesktopSerivices不同
QT4使用QDesktopServices::storageLocation(QDesktopServices::xxxx)来获取一些系统目录, 现在则要改成QStandardPaths::writa ...