myod实验

实验任务

1 复习c文件处理内容

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

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

  2. 编写Makefile

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

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

代码部分

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编译即可

export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
gcc -shared -fpic -o myod.so hex.c ascii.c
gcc myod.c myod.so 

4.makefile
makefile如下,写好后直接make即可

testmymath:main.o add.o sub.o mul.o div.o
    gcc main.o add.o sub.o mul.o div.o -o testmymath
main.o:main.c head.h
    gcc -c main.c -o main.o
add.o:add.c head.h
    gcc -c add.c -o add.o
sub.o:sub.c head.h
    gcc -c sub.c -o sub.o
mul.o:mul.c head.h
    gcc -c mul.c -o mul.o
div.o:div.c head.h
    gcc -c div.c -o div.o
clean:
    rm -f *.o testmymath
12-19 21:07