• Myod实验20181321


    一、实验要求:

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

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

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

      4. 编写Makefile;

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

    二、实验原理

    od命令

    1. 功能

    od命令用于将指定文件内容以八进制、十进制、十六进制、浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直接显示在终端的字符。

    2. 命令选项

    -t<TYPE>:指定输出格式,格式包括a、c、d、f、o、u和x,各含义如下:

    • a:具名字符;
    • c:ASCII字符或者反斜杠;
    • d[SIZE]:十进制,正负数都包含,SIZE字节组成一个十进制整数;
    • f[SIZE]:浮点,SIZE字节组成一个浮点数;
    • o[SIZE]:八进制,SIZE字节组成一个八进制数;
    • u[SIZE]:无符号十进制,只包含正数,SIZE字节组成一个无符号十进制整数;
    • x[SIZE]:十六进制,SIZE字节为单位以十六进制输出,即输出时一列包含SIZE字节。在默认条件下,以四个字节为一组输出

    三、实验过程

    实验代码:

    myod.c

     1 #include<stdio.h>
     2 #include "head.h"
     3 #include<string.h>
     4 void main(){
     5     char file[50];
     6     printf("input the txt name:\n");
     7     scanf("%s",file);
     8     ascii(file);
     9     dx(file);
    10 }

    ascii.c(ascill码)

    #include "head.h"
    #include<stdio.h>
    #include<string.h>
    void ascii(char *file)
    {
        FILE *fp;
        char ch;
        fp=fopen(file,"r");
        ch = fgetc(fp);
        printf("ascii output\n");
        while(ch!=EOF)
        {
            if(ch == '\n'){
                printf("\n");
                ch = fgetc(fp);
                continue;
            }
                printf("%4d",ch);
                ch = fgetc(fp);
        }
        fclose(fp);
        printf("\n");
    }

    decimal.c(16进制)

    #include "head.h"
    #include<stdio.h>
    #include<string.h>
    void dx(char *file)
    {
        FILE *fp;
        char ch;
        fp=fopen(file,"r");
        ch = fgetc(fp);
        printf("sixteen output\n");
        while(ch!=EOF)
        {
            if(ch == '\n'){
                printf("\n");
                ch = fgetc(fp);
                continue;
            }
                printf("%4x",ch);
                ch = fgetc(fp);
        }
        fclose(fp);
        printf("\n");
    }

    头文件():

    void ascii(char *flie);
    void dx(char *flie);

    四、实验过程

    1.编译文件并进行运行

     

    2.main与其他分开,制作静态库

    3.main与其他分开,制作动态库,对ascii.c和decimal.c制作动态库,

    4.编写Makefile

     5.运行结果(makefile)

    五、实验问题与思考:

           在本次实验中,我遇到了在Linux中在读取点txt文件中,到最后都会自动加多一个“\n”,所以在读取ascii码时候会直接输出10,刚刚开始时候用的是if-else的语句来判断是否打印出,但发现是回车键的时,不能打印出来回车键,而是ascii码10,最后只判断是否回车键来进行回车键操作,而其他的直接输出,就可以运行出想要的结果了。

          还有就是在静态库以及动态库的使用了,要检查自己的.o文件是否真的以及存在了,否则就会报错,所以要多检查自己的文件类型,建议在生成的时候饭宅不同的文件夹里面,这次实验我没有分好文件夹,所以就有时候文件要删掉重来。

  • 相关阅读:
    C#网络编程之---TCP协议的同步通信(二)
    CentOS6.4 X86_64 kvm+PXE备忘
    Rsyslog远程传输的几种方式
    ADB工具【转载】
    docker 常用命令
    容灾测试(未完)
    docker 运维实践
    Day 15 图像和办公文档的处理
    服务器调优
    软件测试1 正规流程
  • 原文地址:https://www.cnblogs.com/qbll/p/13798535.html
Copyright © 2020-2023  润新知