一、实验要求

 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的更多相关文章

  1. 学号20175313 《实现Linux下od -tx -tc XXX的功能》第九周

    目录 MyOD 一.题目要求 二.题目理解 三.需求分析 四.设计思路 五.代码链接 六.代码实现过程中遇到的问题 七.运行结果截图 八.参考资料 MyOD 一.题目要求 编写MyOD.java 用j ...

  2. 实现Linux下od -tx -tc XXX的功能

    实现Linux下od -tx -tc XXX的功能 一.od命令 (1)功能 od命令用于将指定文件内容以八进制.十进制.十六进制.浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直 ...

  3. 对Linux命令od -tc -tx1的C语言程序实现myod-优化版

    导语 自编od C语言实现版名为myod 上个星期有一个初代版,链接- myod原版 这星期的课上要求实现myod-系统调用版本,要求如下 1 参考教材第十章内容 2 用Linux IO相关系统调用编 ...

  4. MyCP -tx -xt 功能的Java实现

    MyCP -tx -xt 功能的Java实现 功能简介 java MyCP -tx XXX1.txt XXX2.bin 用来把文本文件(内容为十进制数字)转化为二进制文件 java MyCP -xt ...

  5. 转: KindEditor 图片空间文件增加删除文件、文件夹功能(ASP语言环境)

    KindEditor 图片上传功能中集成的图片空间文件管理插件可以对已上传图片进行管理,十分便捷,只是没有图片删除功能,仔细研读xieliang分享的经验后,自己动手改造了一下,顺便分享给有同样需求的 ...

  6. 利用OD破解一个简单的C语言程序

    最近在学习汇编(看的是王爽老师的<汇编语言(第三版)>),然后想尝试使用OD(Ollydbg)软件破解一个简单的C语言程序练练手. 环境: C语言编译环境:VC++6.0 系统:在Wind ...

  7. 2019-2020-1 20175223 《信息安全系统设计基础》MyOD

    目录 一.要求 二.设计流程 1. 需求分析 2. 概要设计 伪代码 3. 详细设计 main.c tans_0x.c tans_pr.c tansp.h 三.编写Makefile,并制作动.静态库 ...

  8. C语言实现Linux命令——od

    C语言实现Linux命令--od 实现要求: 复习c文件处理内容 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能 main与其他分开,制作静态库和动态库 编写M ...

  9. MyOD C语言代码实现

    Myod C语言实现 一.题目要求 1 复习c文件处理内容 2 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能 main与其他分开,制作静态库和动态库 编写Ma ...

  10. 编程实现Linux系统的od功能

    选做题目以及分析 题目:编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 分析:我觉得这道题目中的参数应当是-tx1而不是-tx,使用了-tx后结 ...

随机推荐

  1. springboot跨域解决

    package com.xf.config; import java.io.IOException; import javax.servlet.Filter; import javax.servlet ...

  2. (原创)【B4A】一步一步入门03:APP名称、图标等信息修改

    一.前言 上篇 (原创)[B4A]一步一步入门02:可视化界面设计器.控件的使用 中我们已经了解了B4A程序的基本框架,现在我们还进一步讲解. 本篇文章会讲解如何修改APP的名称.图标等信息,以让一个 ...

  3. SVN服务器的安装与使用

    一.下载服务端和客户端安装包 百度网盘: 链接:https://pan.baidu.com/s/1QkNbLR9ZkcYPiBp6d_drlQ 提取码:tmi5 也可以在官网自行下载. 二.服务端安装 ...

  4. 郁金香 中级班 1.c++的类和对象

    #include<stdio.h> class 生物 { public: 生物() { printf("我是构造函数\n"); } int id1; int id2; ...

  5. JZOJ 2933. 【NOIP2012模拟8.7】找位置

    题目大意 有 \(n(1 \leq n \leq 10000)\) 个城镇,由 \(1 \leq m \leq 50000\) 条无向道路连接.给出 \(k(1 \leq k \leq 5) 个超市\ ...

  6. 了解舵机以及MG996R的控制方法

    了解舵机以及MG996R的控制方法 1.舵机基础知识: 舵机是遥控航空.航天模型控制动作,改变方向的重要组成部件,舵机是一种位置(角度)伺服的驱动器. 舵机主要适用于那些需要角度不断变化并可以保持的控 ...

  7. @Transactional千万不要这样用!!踩坑了你都可能发现不了!!!

    前阵子接手了一段同事之前的代码,里面用到了@Transactional注解,了解Spring的小伙伴肯定知道,@Transactional是Spring提供的一种控制事务管理的快捷手段.但是我这段程序 ...

  8. 与时俱进的治疗策略不断提高RA无药缓解机会[EULAR2015_SAT0058]

    随时代变迁而进化的治疗策略不断提高RA无药缓解机会 SAT0058 DMARD-FREE SUSTAINED REMISSION IN RHEUMATOID ARTHRITIS: AN OUTCOME ...

  9. P8421 [THUPC2022 决赛] rsraogps

    \(\text{Solution}\) 肯定扫描线在考虑维护什么东西,假设 \(r\) 右移时可以暴力得到所有新值,发现需要维护区间历史版本和以及区间当前值之和 这三个操作对于一个数来说变化次数都是 ...

  10. ClickHouse(13)ClickHouse合并树MergeTree家族表引擎之CollapsingMergeTree详细解析

    目录 建表 折叠 数据 算法 资料分享 参考文章 该引擎继承于MergeTree,并在数据块合并算法中添加了折叠行的逻辑.CollapsingMergeTree会异步的删除(折叠)这些除了特定列Sig ...