zoukankan      html  css  js  c++  java
  • 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值的方法了。

    操作截图

    项目链接

  • 相关阅读:
    array and ram
    char as int
    pointer of 2d array and address
    Install SAP HANA EXPRESS on Google Cloud Platform
    Ubuntu remount hard drive
    Compile OpenSSL with Visual Studio 2019
    Install Jupyter notebook and tensorflow on Ubuntu 18.04
    Build OpenCV text(OCR) module on windows with Visual Studio 2019
    Reinstall VirtualBox 6.0 on Ubuntu 18.04
    Pitfall in std::vector<cv::Mat>
  • 原文地址:https://www.cnblogs.com/battlefieldheros/p/7667611.html
Copyright © 2011-2022 走看看