20181302编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能
MyOD
一、任务详情
1 复习c文件处理内容 2 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能 3. main与其他分开,制作静态库和动态库 4. 编写Makefile 5 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息 6 在博客园发表一篇博客,重点写遇到的问题和解决过程
二、具体步骤
(一)首先复习了C语言与MyOD命令的相关内容
- od命令用于将指定文件内容以八进制、十进制、十六进制、浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直接显示在终端的字符。
- -t之后指定输出的进制,可以包括:a、c、d、f、o、u以及x。它们分别代表字符、ASCII字符或者反斜杠、十进制、浮点、八进制、无符号十进制、十六进制
- -tx后加数字表示以几个字符逐个输出。例如:-tx1则是按一个字符逐个输出
(二)主要思路及编写代码
- 主函数myod.c用来文件的读取和关闭
- od.c函数用来实现od -tx -tc 的功能
head.h
#ifndef HEAD_H
#define HEAD_H
void od(char STR[],int);
#endif
od.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");
}
myod.c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
//char filepath[100]; FILE *fp;
fp=fopen("test.txt","rb");
if(fp==NULL){
printf("Failure to open file\n");
return 0;
}
char ch;
char STR[1000];
int i,n;
i=0;
while((ch=fgetc(fp))!=EOF){
STR[i]=ch;
i++;
//putchar(ch);
}
STR[i]='\0';
//printf("%d",i);
fclose(fp);
od(STR,i);
}
(三)制作静态库和动态库

(四)编写makefile
(五)运行结果

三、问题与总结
起初,我对于od命令可以说是十分陌生,根本不清楚它是用来做什么的,通过查阅资料我大致明白了它的含义。在调试的过程中我也遇到了许多困难,比如在输出时如何控制好按行输出,通过判断文件是否读完即STR[i]=='\0'是否成立以及i是否等于15来判断。总而言之,付出总有回报,整个流程下来感觉学到了很多东西。
20181302编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能的更多相关文章
- 学号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下MySQL报Table 'xxx' doesn't exist错误解决方法,表名存在大小写区分
Linux服务器上在线装了个MySQL,但是部署web应用时一直报后台一直报错:Table 'xxx' doesn't exist. 本地测试一直都是正常的,同样的代码,同样的数据库,表是存在的,但是 ...
- 【转】Linux下cp: omitting directory `XXX'问题解决
在linux系统中复制文件夹时提示如下: Shell代码 [root@idtp4 site-packages]# /site-packages/ cp: omitting directory ‘yag ...
- Linux下c语言实现myod
首先根据od要输出16进制的功能,以及c语言中文件的打开读取等函数,编写了如下代码. #include<stdio.h> #define N 1000 int main() { int c ...
- Linux下编写-makefile-详细教程(跟我一起写-Makefile-Markdown整理版)
目录 概述 关于程序的编译和链接 Makefile 介绍 Makefile的规则 一个演示例子 make是怎样工作的 makefile中使用变量 让make自己主动推导 另类风格的makefile 清 ...
- [转] Linux下编写脚本实现Daemon
在Linux(以Redhat Linux Enterprise Edition 5.3为例)下,有时需要编写Service.Service也是程序,一般随系统启动用户不干预就不退出的程序,可以称为Se ...
- 20155322 2017-2018-1《信息安全系统设计》第二周 课堂测试 Linux下C语言实现MYOD
20155322 2017-2018-1<信息安全系统设计>第二周 课堂测试 Linux下C语言实现MYOD [博客目录] 静态库测试 实现方法 相关资料 操作 动态库测试 实现方法 相关 ...
- 2.linux下Makefile编写规范
转自陈皓 (CSDN) 概述—— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和 profession ...
- Linux下高效编写Shell——shell特殊字符汇总
Linux下无论如何都是要用到shell命令的,在Shell的实际使用中,有编程经验的很容易上手,但稍微有难度的是shell里面的那些个符号,各种特殊的符号在我们编写Shell脚本的时候如果能够用的好 ...
随机推荐
- linux 安装 vsftpd ftp 服务端
安装 yum install vsftpd 修改:/etc/vsftpd/vsftpd.conf anonymous_enable=NO local_enable=YES write_enable=Y ...
- Day 22 22.1.2:增量式爬虫 - 场景2的实现
场景2的实现: 数据指纹 使用详情页的url充当数据指纹即可. 创建爬虫爬虫文件: cd project_name(进入项目目录) scrapy genspider 爬虫文件的名称(自定义一个名字即可 ...
- CF1786E题解
容易为本题的弱化版CF1786C想出一个贪心: #include<bits/stdc++.h> using namespace std; #define int long long int ...
- 爬取白鲸nft排名前25项目,持有nft大户地址数据。
https://moby.gg/rankings?tab=Market SELECT address '钱包地址', COUNT (1) '持有nft项目数', SUM (balance) '持有nf ...
- Word02 领慧讲堂就业讲座office真题
1.课程的讲解之前,先来对题目进行分析,首先需要在考生文件夹下,将Wrod素材.docx文件另存为Word.docx,后续操作均基于此文件,否则不得分. 2.这一步非常的简单,打开下载素材文件,在[文 ...
- Cascader 级联选择器 数据不回显
这次的问题原因主要是因为 数据存在于两张表 并且索引的字段不同 一个为id(int)一个为字符(string) 在做修改操作数据回显的时候会导致 后端返回的数组中一个为字符一个为bumber ...
- 【linux】grep命令检索大批量日志中的堆栈日志
记得3年前,我为了查看100M日志文件里面的错误堆栈信息,百度了许久都毫无结果 没想到今天再次百度时,一下子看到了grep -A 命令,激动不已. 原来只需要用, grep -A 100 'KeyWo ...
- Qt中资源文件qrc中的路径访问
首先先看一下我们的qrc文件目录结构: 在文件系统中的目录结构是这样的: 请务必注意这边的前缀(按照网友推荐,大部分项目前缀都是只写一个"/"): 接下来进入正题,我们来分 ...
- jenkins中的pipline
Jenkins Pipeline 的核心概念 Pipeline,简而言之,就是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排 ...
- python基于百度unit实现语音识别与语音交互
一.百度Unit新建机器人 网址:https://ai.baidu.com/tech/speech/asr: 1.新建机器人并添加预置技能步骤 (1).新建机器人(添加预置技能),并填写机器人具体信息 ...
