C++实践参考——二进制文件浏览器

【项目-二进制文件浏览器】
(1)做一个类似BinaryViewer的查看二进制文件的程序,输入文件名后,可以以16进制和ASCII对照的方式列出该文件的内容,可以参考下图:

提示:循环中,一次读入16个字节,先用16进制形式输出,再用字符形式输出。
[参考解答]

#include<iostream>
#include<iomanip>
#include <fstream>
#include<cstdlib>
using namespace std;

int main( )
{
    char c[16];
    char f[100];
    cout<<"请输入文件名:";
    cin>>f;
    ifstream infile(f,ios::in|ios::binary);
    if(!infile)
    {
        cerr<<"open error!";
        exit(1);
    }
    while(!infile.eof())
    {
        infile.read(c,16);
        if(!infile.eof())
        {
            for(int i=0; i<16; ++i)
                cout<<setfill('0')<<setw(2)<<hex<<int((unsigned char)(c[i]))<<" ";
            cout<<'\t';
            for(int i=0; i<16; ++i)
                cout<<(c[i]?c[i]:'.');
            cout<<endl;
        }
    }

    return 0;
}

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

时间: 2024-09-20 21:21:07

C++实践参考——二进制文件浏览器的相关文章

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

返回:贺老师课程教学链接 [项目5 - 二进制文件浏览器] (1)做一个类似BinaryViewer的查看二进制文件的程序,输入文件名后,可以以16进制和ASCII对照的方式列出该文件的内容,可以参考下图: 提示:循环中,一次读入16个字节,先用16进制形式输出,再用字符形式输出. [参考解答] #include <stdio.h> #include <stdlib.h> #include <ctype.h> int main( ) { char c[16]; char

C++实践参考——用二进制文件处理学生成绩

[项目-用二进制文件处理学生成绩] (1)定义学生类,其中包含学号.姓名.C++课.高数和英语成绩及总分数据成员,成员函数根据需要确定. (2)读入学生的成绩,并求出总分,用对象数组进行存储.ASCII文件score.dat中保存的是100名学生的学号.姓名和C++课.高数和英语成绩. (3)将所有数据保存到一个二进制文件binary_score.dat中,最后通过键盘输入你的信息,并写入到文件中(咱不谦虚,三科全100分,期末求好运). (4)为验证输出文件正确,再将binary_score.

《C++语言基础》实践项目——二进制文件及文件的随机读写

返回:贺老师课程教学链接 [项目1-用二进制文件处理学生成绩] (1)定义学生类,其中包含学号.姓名.C++课.高数和英语成绩及总分数据成员,成员函数根据需要确定. (2)读入学生的成绩,并求出总分,用对象数组进行存储.ASCII文件score.dat中保存的是100名学生的学号.姓名和C++课.高数和英语成绩. (3)将所有数据保存到一个二进制文件binary_score.dat中,最后通过键盘输入你的信息,并写入到文件中(咱不谦虚,三科全100分,期末求好运). (4)为验证输出文件正确,再

《C++语言基础》实践参考—— 链表类

返回:贺老师课程教学链接  项目要求 [项目 - 链表类]动态链表也是程序设计中的一种非常有用的数据结构.可以说,是否能够理解有关操作的原理,决定了你是否有资格称为"科班"出身.在后续的专业基础课中,相关的内容还会从不同的角度,反复地认识,反复地实践.不过,在现阶段多些体验,也是很有必要的了.(1)阅读下面的程序,回顾一下动态链表,阅读程序过程中,请用笔画一画形成链表的过程中指针值的变化. #include <iostream> using namespace std; s

《C语言及程序设计》实践参考——编程处理C源代码

返回:贺老师课程教学链接  实践要求 [项目5-编程处理C源代码]在CodeBlocks等IDE中都提供了代码格式整理的功能.我们可以编写程序,处理的数据就是用C写的源代码文件.C源文件是一种文本文件,可以通过程序进行操作.(1)读入一个C程序,判断其中是否只有一个main()函数,输出"暂时没有发现问题",或者"没有main()函数",或者"不能定义多个main()函数":提示1:简单处理,可以只比较判断"main()",考

《C语言及程序设计》实践参考——字符统计

返回:贺老师课程教学链接  实践要求 [项目2-字符统计]下面的程序可以统计出一个字符串中数字字符的个数: #include <stdio.h> int main() { char str[50]; int i=0,n=0; printf("输入字符串:"); gets(str); while(str[i]!='\0') { if(str[i]>='0'&&str[i]<='9') n++; i++; } printf("其中的数字个数

《C语言及程序设计》实践参考——字符串处理函数

返回:贺老师课程教学链接  实践要求 [项目4-字符串处理函数]指针是神奇的,指向整型的指针int *p1,可以操作整型数组int a[]:指向字符型的指针char *p2,可以操作字符数组(字符串)char str[]:更灵活的是,在函数的传递中,指针.数组名在一定程度上可以互换.请编制函数,对字符串的进行各种操作. 序 功能 用数组名作形参 用指针作形参 1 字符串str1和str2连接,连接后的结果存放到str1中 char *astrcat(char str1[], char str2[

《C语言及程序设计》实践参考——M$pszi$y是嘛意思

返回:贺老师课程教学链接  实践要求 [项目1-M$pszi$y是嘛意思?]背景:小明让同学传纸条给小丽.小丽接到会心一笑,大家却不知所云.纸条上写着M$pszi$y,两人暗中约定是,真实字符为实际字符前面的第4个!M$pszi$y是神马意思?推算一下,或从ASCII码表中查一下,自然是I love u.(1)小明请你写一个程序,在给小丽写情书时,再不用费功夫自己"翻译",原信中每一个字符加密为其后的第4个字符.例,输入I love u,输出M$pszi$y.[参考解答] #inclu

《C语言及程序设计》实践参考——间隔选职工

返回:贺老师课程教学链接 [项目4 - 间隔选职工] (1)从键盘输入10名职工的工号.姓名和年龄,并保存到二进制文件worker.rec中 用下面的结构体表示一名职工的记录 typedef struct { int num; //工号 char name[10]; //姓名 int age; //年龄 } Worker; [参考解答] #include <stdio.h> #include <stdlib.h> typedef struct { int num; //工号 cha