Myod 20181233徐海岩

任务详情:
1 复习c文件处理内容

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

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

4. 编写Makefile

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

6 在博客园发表一篇博客,重点写遇到的问题和解决过程

一、题目分析
od命令
od命令用于将指定文件内容以八进制、十进制、十六进制、浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直接显示在终端的字符。
od命令主要用来查看保存在二进制文件中的值,按照指定格式解释文件中的数据并输出,不管是IEEE754格式的浮点数还是ASCII码,od命令都能按照需求输出它们的值。
语法
od [<选项><参数>] [<文件名>]

-t<TYPE>:指定输出格式,格式包括a、c、d、f、o、u和x,各含义如下
  • a:具名字符;
  • c:ASCII字符或者反斜杠;
  • d[SIZE]:十进制,正负数都包含,SIZE字节组成一个十进制整数;
  • f[SIZE]:浮点,SIZE字节组成一个浮点数;
  • o[SIZE]:八进制,SIZE字节组成一个八进制数;
  • u[SIZE]:无符号十进制,只包含正数,SIZE字节组成一个无符号十进制整数;
  • x[SIZE]:十六进制,SIZE字节为单位以十六进制输出,即输出时一列包含SIZE字节。在默认条件下,以四个字节为一组输出
二、实验代码

main.c
#include <stdio.h> #include <stdlib.h> #define N 100 #define M 17 int main(char argv[]) { FILE *fp; char args[N],name[N],ch; int i=0; printf("please input file name:"); gets(name); if((fp=fopen(name,"r"))==NULL) { printf("ERROR!"); exit(0); } while(fgets(args,17,fp)) { ascii(args,i++); hex(args); } fclose(fp); }

hex.c
#include<stdio.h>
void hex(char args[])
{
    int i;  
    printf("       ");
    for(i=0;args[i]!='\0';i++)
    {
        if(args[i]=='\n')
                    printf("\\n");
        else
                 printf("%4c",args[i]);
    }
   printf("\n");
}

 

 

 

ascii.c
#include<stdio.h>
void ascii(char args[],int j)
{
    int i;
    printf("%07o",16*j);
    j++;
    for(i=0;args[i]!='\0';i++)
    {
    if(args[i]=='\n')
        printf("%x",'\n');
        printf("%4x",args[i]);
    }
    printf("\n");
}

makefile myod: main.o ascii.o hex.o gcc main.o ascii.o hex.o
-o 1233myod main.o: main.c gcc -c main.c ascii.o: ascii.c gcc -c ascii.c hex.o: hex.c gcc -c hex.c

三、实验过程

制作静态库

 

制作动态库

 

编写makefile

 

 

 

 



 



posted @ 2020-10-11 14:28  1233徐海岩  阅读(83)  评论(0)    收藏  举报