⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dump1.c

📁 vc编写的3D图形
💻 C
字号:
/*
 * Dumps a number of bytes from a specified offset from a file.
 * The bytes are output in hex and ascii.
 *
 * Usage: dump file [-o] [-n] [-d | -h] [-w | -b]
 *        -o    : offset (default 0)
 *        -n    : number (default 256)
 *        -d -h : decimal/hexadecimal (default h)
 *        -w -b : word/byte (default b)
 *
 */

#include <stdio.h>
#include <ctype.h>
#include <math.h>

main(argc, argv)
int argc;
char *argv[];
{
  FILE *fp;
  char  fn[256];
  int   offset;
  int   number;
  int   char_cnt;
  unsigned char  in_char[16];
  char  out_char[16];
  int   i;
  int   hexmode;
  int   bytemode;

  fn[0] = '\0'; 
  offset = 0;
  number = 256;
  hexmode = bytemode = 1;
  for (argc; argc > 1; argc--) {
    if (**++argv == '-') {
      switch (tolower(*(*argv + 1))) {
        case 'o':
          offset = atoi(*argv+2);
          break;
        case 'n':
          number = atoi(*argv+2);
          break;
        case 'd':
          hexmode = 0;
          break;
        case 'h':
          hexmode = 1;
          break;
        case 'b':
          bytemode = 1;
          break;
        case 'w':
          bytemode = 0;
          break;
      }
    }
    else
    strcpy(fn, *argv);
  }

  if (fn[0] == '\0' || offset < 0 || number <= 0) {
    printf("Usage: dump file [-o] [-n] [-d | -h] [-b | -w]\n");
    exit(0);
  }

  if ((fp = fopen(fn, "rb")) == NULL) {
    printf("Error opening %s\n", fn);
    exit(1);
  }

  fseek(fp, (long) offset, SEEK_SET);

  for (char_cnt = 0; char_cnt < number; char_cnt += 16) {
    fread(in_char, 1, 16, fp);
    if (bytemode)
      for (i = 0; i < 16; i++)
        if (hexmode)
          printf("%02x ", in_char[i]);
        else
          printf("%03d ", in_char[i]);
    else
      for (i = 0; i < 16; i += 2)
        if (hexmode)
          printf("%02x%02x ", in_char[i], in_char[i+1]);
        else
          printf("%06d ", in_char[i+1] * 0x100 + in_char[i]);

    for (i = 0; i < 16; i++)
      printf("%c", (isprint(in_char[i])) ? in_char[i] : '.');
    printf("\n");
  }

}

⌨️ 快捷键说明

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