MyOD 20181228陈维

实验要求:

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

Linux od命令详解:

  • 1.功能
    • od命令用于将指定文件内容以八进制、十进制、十六进制、浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直接显示在终端的字符。od命令系统默认的显示方式是八进制,名称源于Octal Dump。常见的文件为文本文件和二进制文件。od命令主要用来查看保存在二进制文件中的值,按照指定格式解释文件中的数据并输出,不管是IEEE754格式的浮点数还是ASCII码,od命令都能按照需求输出它们的值。
  • 2.命令格式
    • od [<选项><参数>] [<文件名>]
  • 3.命令选项
    • 1. A<RADIX>,--address-radix=RADIX:选择以何种基数表示地址偏移;
    • 2. -j<BYTES>,--skip-bytes=BYTES:跳过指定数目的字节;
    • 3. -N,--read-bytes=BYTES:输出指定字节数;
    • -S<BYTES>, --strings[=BYTES]:输出长度不小于指定字节数的字符串;
    • 4. -v,--output-duplicates:输出时不省略重复的数据;
    • 5. -w<BYTES>,--width=<BYTES>:设置每行显示的字节数,od默认每行显示16字节。如果选项--width不跟数字,默认显示32字节;
    • 6. -t<TYPE>--format=TYPE:指定输出格式,格式包括acdfoux,各含义如下:
    • a:具名字符;
    • cASCII字符或者反斜杠;
    • d[SIZE]:十进制,正负数都包含,SIZE字节组成一个十进制整数;
    • f[SIZE]:浮点,SIZE字节组成一个浮点数;
    • o[SIZE]:八进制,SIZE字节组成一个八进制数;
    • u[SIZE]:无符号十进制,只包含正数,SIZE字节组成一个无符号十进制整数;
    • x[SIZE]:十六进制,SIZE字节为单位以十六进制输出,即输出时一列包含SIZE字节。
    • --help:在线帮助;
    • --version:显示版本信息。

实验步骤:

1.代码部分:

  • ascii.c(显示ASCII字符):

#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);

}

  • 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);

}

2.流程部分:

myod XXX实现Linuxod -tx -tc XXX的功能代码运行截图:

静态库实现过程及截图:

ar cr myod.a hex.o ascii.o

gcc -o myod myod.c ./ myod.a


动态库实现过程及截图:

gcc -shared -fpic -o myod.so ascii.c hex.c

gcc -o myod2 myod.c ./ myod.so

makefile文件制作及运行截图:

testmymath:myod.o hex.o ascii.o

     gcc myod.o hex.o ascii.o -o testmymath

myod.o:myod.c head.h

    gcc -c myod.c

hex.o:hex.c head.h

    gcc -c hex.c

ascii.o:ascii.c head.h

    gcc -c ascii.c

3.实验体会:

本次作业让我对od命令有了更多的认识,实验过程中也在参考中学习了很多东西,在代码方面没有什么问题,运行期间就显示有一点问题,但结果没有什么问题,总的来说还算顺利,有了不少的体会。

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