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值的方法了。

    操作截图

    项目链接

  • 相关阅读:
    JVM内存区域类别
    ConcurrentHashMap初探
    一张图理解RACSignal的Subscription过程
    ObjC的Block中使用weakSelf/strongSelf @weakify/@strongify
    自己写简单CoreDataManager封装对CoreData操作
    [转]layoutSubviews总结
    [转]日期格式化(yyyy-MM-dd)中,为什么 M 多大写?
    Native App执行JS
    Mac下配置Maven
    Mac OS X中配置Apache
  • 原文地址:https://www.cnblogs.com/battlefieldheros/p/7667611.html
Copyright © 2011-2022 走看看