zoukankan      html  css  js  c++  java
  • myod od -tx -tc功能的c语言实现1210

     一、实验要求

     1. 复习c文件处理内容;

     2. 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能;

     3. main与其他分开,制作静态库和动态库;

     4. 编写Makefile;

     5. 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息。

    二、实验准备

    本次实验要完成的是对od -tx -tc的c代码实现

    它们的主要功能是对文件进行16进制和ascii码的输出,功能同od -tc -tx(只是输出顺序的不同)

    由此本次实验我们需要完成的目标就变成了分别对字符串进行16进制和ascii码输出(这用的是"%d"和"%x"强制转换输出),其中难点在于判断文件是否读完(如下代码使用的是EOF判断)。

    三、实验代码

    head.h//头文件
    
    #ifndef HEAD_H
    #define HEAD_H
    void od(char STR[],int);
    #endif
    
    myod.c//main函数功能
    
    #include<string.h>
    int main()
    {
    
    FILE *fp;
    fp=fopen("test.txt","rb");//此处输入待转换的txt文件
        char ch;
        char STR[1000];
        int i,n;
        i=0;
        while((ch=fgetc(fp))!=EOF)
        {
            STR[i]=ch;
            i++;
        }
        STR[i]='';
        fclose(fp);
        oput(STR,i);
    }
    
    oput.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]!=''){
    if(STR[k]!='
    ')
    {
    printf("  %2c",STR[k]);
    continue;
    }
    else{
    printf("  \n");
    continue;
    }
    }
    else{
    printf("
          ");
    for(j=m;j<k;j++){
    printf("  %02x",STR[j]);
    }
    printf("
    %06d",k+2);
    
    m=k;
    }
    }
    printf("
    ");
    }

    四、测试代码

    为测试如上代码,首先我们需要一个待转换的txt文件,这里新建了一个test.txt,其中内容为字符串“sunnyday20181210

     测试结果如下:

     五、完成静态库,动态库的生成

    静态库:

    动态库:

     

    六、制作makefile

    运行结果:

     七、实验体会

    1、更改待转换的文件需要修改源代码内容,待改进。

    2、在制作动态库的时候遇到了无法生成可执行文件的问题,分析原因后可能是未复制文件(命令行打错,已解决)

    3、虽然本次实验中采用的是我们较为熟悉的c语言编程,但是在编写过程中还是遇到了一些磕绊,算是对文件类型的一次复习。同时也对静态库,动态库以及makefile的编写有了更深刻的体会。

  • 相关阅读:
    Java实现微生物增殖
    HttpClient学习整理
    在Eclipse中使用JUnit4进行单元测试(初级篇)
    http post提交数组
    postman测试post请求参数为json类型
    【springmvc】传值的几种方式&&postman接口测试
    postman的使用方法详解!最全面的教程
    Gson 使用总结 高级用法
    各个JSON技术的比较(Jackson,Gson,Fastjson)的对比
    Session保存用户名到Session域对象中
  • 原文地址:https://www.cnblogs.com/you-knows/p/13799600.html
Copyright © 2011-2022 走看看