20181213戴宜钢——Linux下运用C语言实现Myod

------------恢复内容开始------------

一、题目要求

  1. 复习c文件处理内容
  2. 编写myod.c 用myod XXX实现Linux下od -tc -tx XXX的功能
  3. main与其他分开,制作静态库和动态库
  4. 编写Makefile
  5. 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息
  6. 在博客园发表一篇博客,重点写遇到的问题和解决过程

二、设计思路

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

void hex(char *name);
void ascii(char *name);
 

 

五、运行截图

 

------------恢复内容结束------------

posted @ 2020-10-11 20:55  开心之子  阅读(64)  评论(0编辑  收藏  举报