参考: スラスラわかるC++ 第2版, pp.360-373
main
函数をint main(void)
にはせずにint main(int 引数の数, char *引数排列[])
のようにして実行時に引数が渡せるようにする。char *引数排列[]
はポインタの排列。
下の実行例では、引数排列[0]
に"ConsoleApplication12.exe"が入り、引数排列[1]
に"sute.bin"が入る。
#include <iostream> #include <fstream> #include <iomanip> using namespace std; int main(int num_of_args, char *args[]) { char data; // ファイルから読み出した1バイトデータを格納するための変数。 int num = 0; // ファイルから読み出したバイト数。 if (num_of_args != 2) { // 引数の数が間違っていたら、 printf("retry\r\n"); // 何かを表示して、 return 1; // 終了する。 } ifstream neko(args[1], ios::in | ios::binary); // ダンプするファイル(args[1])を開いて、 if (!neko.is_open()) { // 開けなかったら printf("cannot be opened\r\n"); // 何かを表示して、 return 2; // 終了する。 } while (neko.get(data)) { // 1バイトずつ読み込んで、 //cout << setw(2) << setfill('0') << hex << uppercase << ((int)data & 0xff) << ' '; printf("%02X ", data); // 読み込んだ1バイトをコンソールに表示して、 if (++num % 16 == 0) { // 16バイト読み込むごとに、 printf("\r\n"); // 読みやすくなるよう改行する。 } } return 0; }
このファイルをダンプした: