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


浙公网安备 33010602011771号