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

原创 2015年07月07日 11:22:13

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

【项目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;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

《C语言及程序设计》实践参考——大奖赛计分(续一)

返回:贺老师课程教学链接  项目要求【项目1:大奖赛计分(续一)】在歌手大奖赛中,有10个评委为参赛的选手打分,分数为1~10分。请在大奖赛计分程序基础上,增加功能,若用户输入不在0-10范围内,则立...

《C语言及程序设计》实践参考——命令行加法器

返回:贺老师课程教学链接【项目3 - 命令行加法器】建立项目add,设计一个用命令行能运行的加法器,其中加数的个数不定:输入:add 1 3输出 4输入:add 1 3.1 2 6输出 12.1输入:...

《C语言及程序设计》实践参考——输出小星星(全解)

返回:贺老师课程教学链接  项目要求(1)要输出的是:代码:#include int main( ) { int i,j,n=6; for(i=n;i...

《C语言及程序设计》实践参考——太乐了

返回:贺老师课程教学链接  项目要求【项目7-太乐了】先听故事,再编程序。故事是这样的:话说sin和cos是一对夫妇。一天,sin去听相声了,cos在家。过了一会,有人敲门,cos开门一看,是一个不认...

《C语言及程序设计》实践参考——个税计算器之码数分离

返回:贺老师课程教学链接【项目5-个税计算器之码数分离】在学习分支结构时,我们做过一个个人所得税计算器if语句版,在其中,税率等数据直接写进了程序。这并不是一个好的方案。 下面定义了一个结构体数组,...

《C语言及程序设计》实践参考——单位转换对照表

返回:贺老师课程教学链接  项目要求【项目3:单位转换对照表】编程序生成一张从英尺到米的转换表(1米大约等于3.28英尺),以方便工厂里工人师傅使用。输出形式如下图所示,罗列了从0英尺到99英尺对应的...

《C语言及程序设计》实践参考——折腾二维数组

返回:贺老师课程教学链接 【项目1-折腾二维数组】创建一个5行4列的二维整型数组,通过初始化,为数组中的前两列的10个元素赋初值,然后:通过键盘输入,使后两列的10个元素获得值;按行序优先输出数组元素...

《C语言及程序设计》实践参考——简单循环的流程图

返回:贺老师课程教学链接  项目要求简单循环的流程图(提示:m是一个变量,在程序中输入)(1)求1到m的倒数和,即  [参考解答](2)求1到m的平方和[参考解答](3)求1到m间所有奇数的和[参考解...

《C语言及程序设计》实践参考——求解分段函数的值

返回:贺老师课程教学链接  项目要求【项目2-求解分段函数的值】#include double f(double); //这一句是对自定义函数f的声明 int main( ) { do...

《C语言及程序设计》实践参考——回文数

返回:贺老师课程教学链接  项目要求【项目4-回文数】(1)输入一个正整数,判断其是否为一个回文数(例1221、12321都是回文数,正着看、倒着看,是同一个数)。[参考解答]#include in...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《C语言及程序设计》实践参考——二进制文件浏览器
举报原因:
原因补充:

(最多只允许输入30个字)