Myod实验 20181328祝维卿

目录

一、任务要求

二、准备阶段

三、OD命令了解

四、代码实现

4.1初始设置       

                     4.2静态库

                     4.3动态库

                     4.4Makefile

五、实验详情

一、任务要求
 
1 复习c文件处理内容

2 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能

3. main与其他分开,制作静态库和动态库

4. 编写Makefile

5 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息

6 在博客园发表一篇博客,重点写遇到的问题和解决过程
 
二、准备阶段
  • 借助之前的学习复习熟悉文件语法的运用
  • 二进制与十进制间的相互转化,借由网络资源了解到Integer.parseInt语句不仅可以实现字符到数的转化,还可以借由此语句进行其他进制到十进制的直接转化赋值

 

三、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);

五、实验详情

1.用myod XXX实现Linux下od -tx -tc XXX的功能
只需要输入gcc *.c即可编译成功,新建一个记事本test.txt,里面输入一些随机的东西

2.用静态库
将.o文件生成静态库后,gcc即可

gcc -c ascii.c -o ascii.o
gcc -c hex.c -o hex.o
ar cr myod.a *.o
gcc -o myod myod.c -L. myod.a

 

3.用动态库
对ascii.c和hex.c制作动态库,然后gcc编译即可

 

4.makefile

 

 

 

 

 

 

 
 
posted @ 2020-10-11 16:00  维卿  阅读(88)  评论(0编辑  收藏  举报