20181213戴宜钢——Linux下运用C语言实现Myod
------------恢复内容开始------------
一、题目要求
- 复习c文件处理内容
- 编写myod.c 用myod XXX实现Linux下od -tc -tx XXX的功能
- main与其他分开,制作静态库和动态库
- 编写Makefile
- 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息
- 在博客园发表一篇博客,重点写遇到的问题和解决过程
二、设计思路
od(OctalDump)命令系统默认的显示方式是八进制。
od命令一般用来查看特殊格式的文件内容。通过指定该命令的不同选项可以以十进制、八进制、十六进制和ASCII码来显示文件。
语法:od [-A 地址进制] [-t 显示格式]文件
其中本次作业中需要实现的是:
-tc:输出ASCII字符及反斜杠序列(如\n)
-tx:输出十六进制数
实现指令:myod -tc -tx XXX.txt
三、OD指令
-
作用:od命令用于输出文件的八进制、十六进制或其它格式编码的字节,通常用于显示或查看文件中不能直接显示在终端的字符。常见的文件为文本文件和二进制文件。此命令主要用来查看保存在二进制文件中的值。比如,程序可能输出大量的数据记录,每个数据是一个单精度浮点数。这些数据记录存放在一个文件中,如果想查看下这个数据,这时候od命令就派上用场了。在我看来,od命令主要用来格式化输出文件数据,即对文件中的数据进行无二义性的解释。不管是IEEE754格式的浮点数还是ASCII码,od命令都能按照需求输出它们的值。
- 命令:
od <选项><参数> <文件名>
-
选项:
-a:此参数的效果和同时指定“-ta”参数相同;
-A:<字码基数>:选择以何种基数计算字码;
-b:此参数的效果和同时指定“-toC”参数相同;
-c:此参数的效果和同时指定“-tC”参数相同;
四、代码运行
myod.c
#include "head.h" #include <stdio.h> void main() { char name[50]; printf("please input the txtname:"); scanf("%s",name); ascii(name); hex(name); }
ascii.c
#include "head.h" #include <stdio.h> void ascii(char *name) { FILE *fp; char ch; fp=fopen(name,"r"); ch=fgetc(fp); printf("output the ascii:\n"); while(ch!=EOF) { if(ch=='\n') printf("\n"); else printf("%4d",ch); ch=fgetc(fp); } fclose(fp); }
hex.c
#include "head.h" #include <stdio.h> void hex(char *name) { FILE *fp; char ch; printf("output the hex:\n"); fp=fopen(name,"r"); ch=fgetc(fp); while(ch!=EOF) { if(ch=='\n') printf("\n"); else printf("%4x",ch); ch=fgetc(fp); } fclose(fp); }
head.h
五、运行截图
------------恢复内容结束------------