复习c文件处理内容
编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能
main与其他分开,制作静态库和动态库
编写Makefile
提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息
在博客园发表一篇博客,重点写遇到的问题和解决过程
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:指定输出格式,格式包括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字节。
--help:在线帮助;
--version:显示版本信息。
#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);
}
#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);
}
#include "head.h"
#include <stdio.h>
void main()
{
char name[50];
printf("please input the txtname:");
scanf("%s",name);
ascii(name);
hex(name);
}
用myod XXX实现Linux下od -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
在gcc链接库时出现错误。
通过检查是代码格式出现问题,进过修改即可。
gcc -shared -fpic -o MYoD.so ascii.c hex.c
原文:https://www.cnblogs.com/20199304lbs/p/11923367.html