#include <stdio.h>
#include <stdlib.h>
#define LEN 16
int main(int iParam, char *cpParam[])
{ int iCnt;
FILE *stFile;
char cBuf;
char caStr[LEN+1]="";
if(2 != iParam)
{ fprintf(stdout, "파일 이름을 쓰세요\n");
return 0;
}
stFile = fopen(cpParam[1], "rb");
if(0 == stFile)
{ fprintf(stdout, "[%s]파일을 찾을 수 없습니다\n"
, cpParam[1]);
return 0;
}
printf( "┌────────┬───────────────────────────────────────────────┬────────────────┐\n");
printf( "│ │ HEXA CODE │ ASCII CODE │\n");
printf( "│ ADDR ├───────────────────────────────────────────────┴────────────────┤\n");
printf( "│ │00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0123456789ABCDEF│\n");
printf( "├────────┼────────────────────────────────────────────────────────────────┤\n");
for( cBuf = fgetc(stFile), iCnt = 0 ; EOF != cBuf ; cBuf = fgetc(stFile))
{
if(0 == (iCnt%LEN))
{
printf("│%08X│", iCnt/LEN);
}
printf("%02X ", (unsigned char)cBuf);
if(31 < cBuf)
{
caStr[iCnt%LEN] = cBuf;
}
else
{
caStr[iCnt%LEN] = '.';
}
++iCnt;
if(0 == (iCnt%LEN))
{
printf("%s│\n", caStr);
}
}
if(0 != (iCnt%LEN))
{
while(0 != (iCnt%LEN))
{
caStr[iCnt%LEN] = ' ';
printf(" ");
++iCnt;
}
printf("%s│\n", caStr);
}
printf( "└────────┴────────────────────────────────────────────────────────────────┘\n");
fclose(stFile);
return 0;
} |