第14周-專案2-二進位制檔案瀏覽器

kewlgrl發表於2015-06-15
問題及程式碼:

/*   
*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進位制形式輸出,再用字元形式輸出。

學習心得:

表示一開始木有頭緒,是看了賀老師的參考解答才有思路寫出來的。。

相關文章