• MyOD C语言代码实现


    Myod C语言实现

    一、题目要求

    1 复习c文件处理内容
    2 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能
    3. main与其他分开,制作静态库和动态库
    4. 编写Makefile
    5 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息
    6 在博客园发表一篇博客,重点写遇到的问题和解决过程

    二、设计思路

    od命令:

    因此,我们的目标是实现用C语言读取文本,以16进制输出文本内容,并且输出相应的ascii码。

    C语言读取命令行

    为了取用我们命令行的参数,在主函数myod.c中,应该采用如下形式:int main(int argc,char *argv[])
    与我们上学期所学的java语言不同,C语言读取命令行参数会从运行该程序的指令开始存储,效果如下图:

    因此,我们输入的文件名在程序中被argv[1]所存储。

    伪代码

    主函数
    int main(int argc,char *argv[]){
       尝试打开文件;
       if(文件打开失败||输入命令本身存在错误)
         报错
       else
         调用功能函数(传入文件指针)
    }
    
    功能函数
       while(没有读到文件末尾){
       读取16个字节
       以16进制形式输出
       将ascii码输出
       }
    

    实现过程中遇到的问题

    1.计数标识位数不满足7位

    在代码运行过程中,左侧计数标识在linux中应该形如“0000020”等形式,但是在我运行过程中却是如下显示:

    解决:
    在这里我们其实只需要将输出的格式稍加改动,printf("%07x",参数)的显示格式即为7位显示,不满7位会在前面补0。

    2.无法显示“ ”

    这个其实在上学期实现就已经注意到了这个问题,解决办法为当读到' '时,我们手动输出printf("\n");,并在ascii码输出行补上' '的ascii码即可。

    代码运行

    建立静态库

    建立动态库

    编写makefile文件

    总结

    这次的代码实现起来不算很难,主要在于题目要求仅仅实现-tc -tx的功能,实际上如前面所展示的,od命令的参数还有很多中,其实还有很大的扩充空间。

    码云链接

  • 相关阅读:
    【项目】 技术选型 平台和语言
    WCF 常见逻辑和代码 1.错误处理和配置
    一个挺有意思的Javascript小问题
    【设计原则和建议】 方法返回值
    一次HTTP请求中的缓存
    【设计原则和建议】 方法
    【设计原则和建议】 字段
    Express全系列教程之(一):Express的安装 和第一个程序
    js switch语句祥解[范围判断]
    修改notepad++ zencodeing 插件的配置路径
  • 原文地址:https://www.cnblogs.com/darklord0604/p/11610477.html
Copyright © 2020-2023  润新知