C语言实现Linux下od -tx -tc XXX的功能
2021/9/27 7:12:38
本文主要是介绍C语言实现Linux下od -tx -tc XXX的功能,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
环境:OpenEuler21.03
+Vscode
+gcc
+cgdb
1 任务详情
复习c文件处理内容
编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能
main与其他分开,制作静态库和动态库
编写Makefile
提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息
在博客园发表一篇博客,重点写遇到的问题和解决过程
2 功能分析
2.1 od说明
-
功能
od命令用于输出文件的八进制、十六进制或其它格式编码的字节,通常用于显示或查看文件中不能直接显示在终端的字符。
-
使用格式
od [<选项><参数>] [<文件名>]
-
选项
-a:此参数的效果和同时指定“-ta”参数相同;
-A:<字码基数>:选择以何种基数计算字码;
-b:此参数的效果和同时指定“-toC”参数相同;
-c:此参数的效果和同时指定“-tC”参数相同;
-d:此参数的效果和同时指定“-tu2”参数相同;
-f:此参数的效果和同时指定“-tfF”参数相同;
-h:此参数的效果和同时指定“-tx2”参数相同;
-i:此参数的效果和同时指定“-td2”参数相同;
-j<字符数目>或--skip-bytes=<字符数目>:略过设置的字符数目;
-l:此参数的效果和同时指定“-td4”参数相同;
-N<字符数目>或--read-bytes=<字符数目>:到设置的字符树目为止;
-o:此参数的效果和同时指定“-to2”参数相同;
-s<字符串字符数>或--strings=<字符串字符数>:只显示符合指定的字符数目的字符串;
-t<输出格式>或--format=<输出格式>:设置输出格式;
-v或--output-duplicates:输出时不省略重复的数据;
-w<每列字符数>或--width=<每列字符数>:设置每列的最大字符数;
-x:此参数的效果和同时指定“-h”参数相同;
--help:在线帮助;
--version:显示版本信息。 -
od -tx -tc
在OpenEuler
下的运行效果
2.2 需求分析
由上述功能描述可以得出需求:
-
支持命令行调用,并通过传参方式读取目标文件
-
每行数字开头前7位为为当前读取到字符数的八进制表示
-
每行读取16个字符,每个字符转化为两位的十六进制数,每四个字符作为一组输出。每输出一行文件内容的十六进制表示,下一行紧接着输出对应的ASCII字符。
-
全部文本内容输出结束后,输出“\n”的十六进制表示以及对应的ASCII字符
3 编写代码
代码见Gitee
运行效果如下:
4 编写makefile&制作动态库和静态库
makefile内容如下:
staticMyOD: main.o tc.o tx.o gcc lib/main.o lib/tc.o lib/tx.o -o bin/staticMyOD main.o: src/main.c include/head.h gcc -c src/main.c -Iinclude -o lib/main.o tc.o: src/tc.c include/head.h gcc -c src/tc.c -Iinclude -o lib/tc.o tx.o: src/tx.c include/head.h gcc -c src/tx.c -Iinclude -o lib/tx.o dllMyOD: src/main.c libMyOD.so include/head.h gcc -Iinclude -Llib -lMyOD src/main.c -o bin/dllMyOD libMyOD.so: dlltx.o dlltc.o gcc -shared -o lib/libMyOD.so lib/dlltx.o lib/dlltc.o dlltc.o: src/tc.c include/head.h gcc -c -fPIC -Iinclude src/tc.c -o lib/dlltc.o dlltx.o: src/tx.c include/head.h gcc -c -fPIC -Iinclude src/tx.c -o lib/dlltx.o clean: rm lib/* rm bin/* static: staticMyOD dll: dllMyOD all: dllMyOD staticMyOD
通过makefile制作静态库和动态库,完成后项目目录如下:
5 遇到的问题
- 格式无法对齐
- 已解决
- 解决办法:对照od输出,逐步调整,最终达到目的
这篇关于C语言实现Linux下od -tx -tc XXX的功能的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法