《C语言及程序设计》实践参考——二进制文件浏览器

来源:互联网 发布:梦想海贼王转盘数据 编辑:程序博客网 时间:2024/06/05 03:32

返回:贺老师课程教学链接

【项目5 - 二进制文件浏览器】
(1)做一个类似BinaryViewer的查看二进制文件的程序,输入文件名后,可以以16进制和ASCII对照的方式列出该文件的内容,可以参考下图:
这里写图片描述
提示:循环中,一次读入16个字节,先用16进制形式输出,再用字符形式输出。
[参考解答]

#include <stdio.h>#include <stdlib.h>#include <ctype.h>int main( ){    char c[16];    char f[100];    int i;    printf("请输入文件名:");    scanf("%s", f);    FILE *fp;    if ((fp=fopen(f,"rb"))==NULL)    {        printf("connot open\n");        exit(1);    }    while(!feof(fp))    {        fread(c,16,1,fp);        if(!feof(fp))        {            for(i=0; i<16; ++i)                printf("%02x ", (int)c[i]);            printf("\t");            for(i=0; i<16; ++i)                printf("%c", ((isdigit(c[i])||isalpha(c[i]))?c[i]:'.'));            printf("\n");        }    }    fclose(fp);    return 0;}

(2)通过为main函数加参数,在命令行方式下,输入“命令加文件名”的方式,就可以显示该文件的内容,也采用如上16进制和ASCII对照的形式。
[参考解答]

#include <stdio.h>#include <stdlib.h>#include <ctype.h>int main(int argc, char *argv[]){    if( argc !=2)    {        printf("you must provide a filename in command line.\n");        exit(1);    }    char c[16];    int i;    FILE *fp;    if ((fp=fopen(argv[1],"rb"))==NULL)    {        printf("connot open\n");        exit(1);    }    while(!feof(fp))    {        fread(c,16,1,fp);        if(!feof(fp))        {            for(i=0; i<16; ++i)                printf("%02x ", (int)c[i]);            printf("\t");            for(i=0; i<16; ++i)                printf("%c", ((isdigit(c[i])||isalpha(c[i]))?c[i]:'.'));            printf("\n");        }    }    fclose(fp);    return 0;}
0 0
原创粉丝点击