• 10.11课后练习——MyOD系统调用版本


    MyOD系统调用版本

    题目要求

    • 参考教材《深入理解计算机(第三版)》第十章内容
    • 用Linux IO相关系统调用编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能,注意XXX是文件名,通过命令行传入,不要让用户输入文件名
    • 不要把代码都写入main函数中
    • 要分模块,不要把代码都写入一个.c中
    • 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息

    实践情况

    MyOD这个程序我去年做过Java版本的,今年因为电脑问题又将原来Java版本的MyOD作改版,换成C语言版本的MyOD。不过C语言版的MyOD不能直接使用在Linux下直接使用命令行启动,而且也不是使用read这种系统调用函数来读取文件,程序还是都装在一个函数内。
    原来的C语言版MyOD的核心部分就是其读写文件部分,原来的代码是这样的:

    ……
    FILE *in=fopen(fileName,"r");
    ……
     while(!feof(in))
        {
          fscanf(in,"%c",&str[i]);
          if (str[i]=='
    ')
          {
            printf("
    ");
          }
          else 
          {
            printf("%x	",str[i]);
            i++;
          }
    ……
    

    由fopen函数打开指定文件,在确定文件不为空之后,用字符串数组读取文件内每一个字符(包括换行符和空格),再通过%x这样的方法强制输出16位ASCII码值。
    我将读取/写出部分从main.c内分离出来之后,使用read方法读取文件:read(file,&c,1)。读取文件名,确认本文件的确存在后,则开始将读取到的文件字符转换成16位ASCII码值输出。
    仍然是使用原来的ASCII码值输出方式:printf("%x ",char[c]);
    我也想不到还有什么样的方法可以输出ASCII值的方法了。

    操作截图

    项目链接

  • 相关阅读:
    几种常用的排序算法
    Charles 抓包工具安装和采坑记录
    当你骂特朗普的时候你究竟在骂什么
    苹果公司的另一面:沃兹尼亚克
    网络爬虫设计中需要注意的几个问题
    微信小程序 canvas 绘图问题总结
    自己动手做智能家居之:智能空调控制
    Allegro导入PADS文件
    C#
    C#
  • 原文地址:https://www.cnblogs.com/battlefieldheros/p/7667611.html
Copyright © 2020-2023  润新知