a755dump.cpp

来自「quinto esempi vari per c++ (schemi base)」· C++ 代码 · 共 61 行

CPP
61
字号
// nuovi elementi: fill(), isgraph()
#include <iostream>
#include <fstream>
#include <iomanip>

using namespace std;

/* dump esadecimale e ASCII di un file */

int main(int argc, char * argv[]) {
if (argc == 1){            // termina se non ci sono argumenti
   cerr << "Uso: " << argv[0] << " <nomefile>\n";
   exit(1);
   }
char b;
unsigned short a;
int c=0, r=0;
unsigned int ind=0;
char riga[17] = "                ";  // 16 spazi

ifstream fin(argv[1]);
if (!fin) {
   cerr << "Non sono riuscito ad aprire il file " << argv[1] << "\n";
   exit(2);
   }
cout.fill('0');
cout << "  " << hex << setw(4) << ind << "  ";

while (fin.get(b)) {
  a=b+128;
  ind++;
  cout << " " << setw(2) << a;
  riga[c] = isgraph(b) ? b : ' ';
  if (++c==8) cout << " ";
  else if (c==16) {
    cout << "   " << riga << endl;
    c=0;
    if (++r==16) {
      cin.get();
      cout << endl;
      r=0;
      }
    if (fin.peek() != EOF)
      cout << "  " << setw(4) << ind << "  ";
    }
  }

fin.close();

if (c<16) {
  for (r=c; r < 16; r++) {
    cout << "   ";
    riga[r] = ' ';
    }
  if (c<8) cout << " ";
  cout << "   " << riga << endl;
  }
return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?