od -cx clone
Ed Clarke
clarke at acheron.UUCP
Sun Feb 19 01:48:23 AEST 1989
/*
* Function:
*
* Similar to 'od -cx' but with more concise format
*
* Dump a file in hex and printable on the same line.
* Quick, dirty, works. Non printing chars are displayed
* using the NONPRINT char, and the 16 byte printable is
* delimited by the WALLS char.
*
* Copyright 1989 by E. Clarke. Released to Public Domain
* with no restrictions. Sell it if you can find anyone
* dumb enough to buy it.
*/
#include <stdio.h>
#include <ctype.h>
#ifndef NONPRINT
#define NONPRINT '.'
#endif
#ifndef WALLS
#define WALLS '|'
#endif
void perror();
void exit();
int main(argc,argv)
int argc;
char **argv;
{
FILE *f;
char buff[16];
int i;
static int cnt = -16;
if(argc == 1)
f = stdin;
else
f = fopen(argv[1],"r");
if(f == NULL) {
perror("Can't open file");
exit(1);
}
for(i=0;i<16;i++)
buff[i] = '\0';
while(fread(buff,sizeof(char),sizeof(buff),f)) {
cnt += 16; /* increment address ptr */
printf("%06.6X\t",cnt); /* display it */
for(i=0;i<8;i++)
printf("%02.2X ",buff[i]);
printf(" "); /* help in counting */
for(i=8;i<16;i++)
printf("%02.2X ",buff[i]);
printf(" %c",WALLS);
for(i=0;i<16;i++) {
printf("%c",isprint(buff[i]) ? buff[i] : NONPRINT);
buff[i] = '\0';
}
printf("%c\n",WALLS);
}
return(fclose(f));
}
--
Ed Clarke
uunet!bywater!acheron!clarke
More information about the Alt.sources
mailing list