问题及代码:
一次读入16个字节,先用16进制形式输出,再用字符形式输出。
/*
*Copyright (c)2015,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:File.cpp
*作 者:单昕昕
*完成日期:2015年6月15日
*版 本 号:v1.0
*问题描述:
(1)做一个类似BinaryViewer的查看二进制文件的程序,输入文件名后,可以以16进制和ASCII对照的方式列出该文件的内容,可以参考下图:
这里写图片描述
提示:循环中,一次读入16个字节,先用16进制形式输出,再用字符形式输出。
(2)通过为main函数加参数,在命令行方式下,输入“命令加文件名”的方式,就可以显示该文件的内容,也采用如上16进制和ASCII对照的形式。
*程序输入:文件名。
*程序输出:以16进制和ASCII对照的方式列出该文件的内容。
*/
#include <iostream>
#include <cstdio>
#include <iomanip>
#include <cstdlib>//为了使用exit()
#include <fstream>
using namespace std;
int main()
{
char c[16],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;
}
一次读入16个字节,先用16进制形式输出,再用字符形式输出。
学习心得:
表示一开始木有头绪,是看了贺老师的参考解答才有思路写出来的。。