#include #include #define WIDTH 8 int count=0; char *decfmt="%d\t"; char *octfmt="0%o\t"; char *hexfmt="0x%x\t"; int printascii(char *fmt, FILE *infp) { int c; while( (c = fgetc(infp)) != EOF){ printf(fmt,c); count = (count + 1) %8; if (count == 0 ){ putchar('\n'); } } } int main(int argc, char **argv) { char *progname = argv[0]; int status = 0; FILE *fp; char *fmt; if(strcmp("asciih", progname) == 0){ fmt = hexfmt; }else if( strcmp("asciio", progname) == 0 ){ fmt = octfmt; }else { fmt = decfmt; } if( argc < 2) { printascii(fmt,stdin); putchar('\n'); return 0; } for(int i = 1; i < argc; i++){ fp = fopen(argv[i],"r"); if( fp == NULL){ fprintf(stderr,"%s: could not open %s\n", progname, argv[i]); status++; } else printascii(fmt, fp); } putchar('\n'); return status; }