myod od -tx -tc功能的c语言实现1210
一、实验要求
1. 复习c文件处理内容;
2. 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能;
3. main与其他分开,制作静态库和动态库;
4. 编写Makefile;
5. 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息。
二、实验准备
本次实验要完成的是对od -tx -tc的c代码实现
它们的主要功能是对文件进行16进制和ascii码的输出,功能同od -tc -tx(只是输出顺序的不同)
由此本次实验我们需要完成的目标就变成了分别对字符串进行16进制和ascii码输出(这用的是"%d"和"%x"强制转换输出),其中难点在于判断文件是否读完(如下代码使用的是EOF判断)。
三、实验代码
head.h//头文件 #ifndef HEAD_H
#define HEAD_H
void od(char STR[],int);
#endif myod.c//main函数功能 #include<string.h>
int main()
{ FILE *fp;
fp=fopen("test.txt","rb");//此处输入待转换的txt文件
char ch;
char STR[1000];
int i,n;
i=0;
while((ch=fgetc(fp))!=EOF)
{
STR[i]=ch;
i++;
}
STR[i]='\0';
fclose(fp);
oput(STR,i);
} oput.c//输出函数 #include"head.h"
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void od(char STR[1000],int i)
{
int k=1;
int j=0;
int m=0;
int line=0;
printf("%06d ",line);
putchar(STR[0]);
for(k=1;k<=i;k++){
if(k%16!=0&&STR[k]!='\0'){
if(STR[k]!='\n')
{
printf(" %2c",STR[k]);
continue;
}
else{
printf(" \\n");
continue;
}
}
else{
printf("\n ");
for(j=m;j<k;j++){
printf(" %02x",STR[j]);
}
printf("\n%06d",k+2); m=k;
}
}
printf("\n");
}
四、测试代码
为测试如上代码,首先我们需要一个待转换的txt文件,这里新建了一个test.txt,其中内容为字符串“sunnyday20181210

测试结果如下:

五、完成静态库,动态库的生成
静态库:

动态库:

六、制作makefile

运行结果:

七、实验体会
1、更改待转换的文件需要修改源代码内容,待改进。
2、在制作动态库的时候遇到了无法生成可执行文件的问题,分析原因后可能是未复制文件(命令行打错,已解决)
3、虽然本次实验中采用的是我们较为熟悉的c语言编程,但是在编写过程中还是遇到了一些磕绊,算是对文件类型的一次复习。同时也对静态库,动态库以及makefile的编写有了更深刻的体会。
myod od -tx -tc功能的c语言实现1210的更多相关文章
- 学号20175313 《实现Linux下od -tx -tc XXX的功能》第九周
目录 MyOD 一.题目要求 二.题目理解 三.需求分析 四.设计思路 五.代码链接 六.代码实现过程中遇到的问题 七.运行结果截图 八.参考资料 MyOD 一.题目要求 编写MyOD.java 用j ...
- 实现Linux下od -tx -tc XXX的功能
实现Linux下od -tx -tc XXX的功能 一.od命令 (1)功能 od命令用于将指定文件内容以八进制.十进制.十六进制.浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直 ...
- 对Linux命令od -tc -tx1的C语言程序实现myod-优化版
导语 自编od C语言实现版名为myod 上个星期有一个初代版,链接- myod原版 这星期的课上要求实现myod-系统调用版本,要求如下 1 参考教材第十章内容 2 用Linux IO相关系统调用编 ...
- MyCP -tx -xt 功能的Java实现
MyCP -tx -xt 功能的Java实现 功能简介 java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为十进制数字)转化为二进制文件 java MyCP -xt ...
- 转: KindEditor 图片空间文件增加删除文件、文件夹功能(ASP语言环境)
KindEditor 图片上传功能中集成的图片空间文件管理插件可以对已上传图片进行管理,十分便捷,只是没有图片删除功能,仔细研读xieliang分享的经验后,自己动手改造了一下,顺便分享给有同样需求的 ...
- 利用OD破解一个简单的C语言程序
最近在学习汇编(看的是王爽老师的<汇编语言(第三版)>),然后想尝试使用OD(Ollydbg)软件破解一个简单的C语言程序练练手. 环境: C语言编译环境:VC++6.0 系统:在Wind ...
- 2019-2020-1 20175223 《信息安全系统设计基础》MyOD
目录 一.要求 二.设计流程 1. 需求分析 2. 概要设计 伪代码 3. 详细设计 main.c tans_0x.c tans_pr.c tansp.h 三.编写Makefile,并制作动.静态库 ...
- C语言实现Linux命令——od
C语言实现Linux命令--od 实现要求: 复习c文件处理内容 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能 main与其他分开,制作静态库和动态库 编写M ...
- MyOD C语言代码实现
Myod C语言实现 一.题目要求 1 复习c文件处理内容 2 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能 main与其他分开,制作静态库和动态库 编写Ma ...
- 编程实现Linux系统的od功能
选做题目以及分析 题目:编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 分析:我觉得这道题目中的参数应当是-tx1而不是-tx,使用了-tx后结 ...
随机推荐
- 自动化运维:使用Maven与Docker运行Selenium测试
在这篇文章中,我们将向您展示如何创建交付流水线并实现以下目标: 使用Web应用程序构建Docker镜像 在Docker容器中运行该应用程序 从不同的容器中使用Maven运行Selenium测试 出于本 ...
- drf-api接口、测试工具postman
1.web应用模式 """ django是一个web框架,专门用来写web项目,之前学的bbs项目,图书管理系统,用的是前后端混合开发. ""&quo ...
- 【学习日志】volatile关键字的作用
消除指令重排序 保证了不同线程对变量进行操作时的可见性,cpu对变量值修改后,其他线程读取变量信息时从内存读取而非cpu缓存
- 剑指 Offer 32 - I. 从上到下打印二叉树(java解题)
目录 1. 题目 2. 解题思路 3. 数据类型功能函数总结 4. java代码 1. 题目 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9, ...
- python爬取丁香园疫情数据
毕设需求了就是说 导师要做关于时间线的- -看发展趋势 不得不今天又现学现卖 首先 创建一个python文件 python.file 引入一点资源 # 发送请求 import requests # 页 ...
- Consul调用no instances或Consul页面All service checks failing
1.问题体现 Consul中Consumer调用Provider会出现No instances available for XXX 这时打开Consul控制台页面: 可以看到这里出现All servi ...
- VS Code windows系统C/C++环境配置_添加路径
1.安装cygwin 2.配置VS Code 按ctrl + shift + p ,选择 c/c++:Edit configuration(json) { "configurations&q ...
- jquery(四:jquery的事件、Ajax)
Jquery事件 jQuery注册事件 1.利用原生的js来为对象注册事件,后面的会把前面的覆盖 2.用jQuery的$()来为对象注册事件,后面不会把前面的覆盖 简单事件绑定-----click() ...
- 2022 CSP-S 游记
\(9.26\):开坑. 没报 J 组主要是因为 J 比较垃圾,去抢小朋友的一等没什么意思. 初赛 刚拿到试卷就直接懵了,这 tm 是给人做的题?宇宙射线是什么奇妙东西,还有基数排序我根本不会啊,这个 ...
- CF884E - Binary Matrix
题意:对于一个使用十六进制读入的 \(01\) 矩阵,求其中 \(1\) 的连通块个数,空间限制 16MB .\(n\le 2^{12},m\le2^{14}\) 我们认为如何读入是比较基础的内容,不 ...