/* hex.c * D. Brylow 2010 Sep 03 COSC 3300 * Demo #1 - Hex dump utility demonstrates command line arguments, * file I/O, output specifiers for examining data. */ #include #include #include int main(int argc, char **argv) { int i, count = 0, total = 0; FILE *input; char contents[16]; // printf("Number of arguments = %d\n", argc); // for (i = 0 ; i < argc; i++) // { // printf("ArgV[%d] = %s\n", i, argv[i]); // } if (argc != 2) { printf("Error: Expected filename!\n"); exit(-1); } input = fopen(argv[1], "r"); if (NULL == input) { printf("Error: Could not open file %s!\n", argv[1]); exit(-2); } while (0 < (count = fread(contents, 1, 16, input))) { printf("%08X ", total); total += count; for (i = 0; i < count; i++) { printf("%02X ", contents[i]); if (7 == (i % 8)) { printf(" "); } } if (count < 16) { for (i = 0; i < 16 - count; i++) { printf(" "); if (7 == (i % 8)) { printf(" "); } } printf(" "); } printf("|"); for (i = 0; i < count; i++) { if (isprint(contents[i])) { printf("%c", contents[i]); } else { printf("."); } } printf("|\n"); } printf("%08X\n", total); fclose(input); }