#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#define LEN 16
int main(int iParam, char *cpParam[])
{ int iCnt;
int iFile;
unsigned char ucBuf;
unsigned char ucaStr[LEN+1]="";
if(2 != iParam)
{ fprintf(stdout, "파일 이름을 쓰세요\n");
return 0;
}
iFile = open(cpParam[1], O_RDONLY);
if(0 > iFile)
{ 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");
iCnt = 0;
while(1 == read(iFile, &ucBuf, 1))
{
if(0 == (iCnt%LEN))
{
printf("│%08X│", iCnt/LEN);
}
printf("%02X ", ucBuf);
if(31 >= ucBuf)
{
ucaStr[iCnt%LEN] = '.';
}
else if(127 < ucBuf)
{
ucaStr[iCnt%LEN] = '.';
}
else
{
ucaStr[iCnt%LEN] = ucBuf;
}
++iCnt;
if(0 == (iCnt%LEN))
{
printf("%s│\n", ucaStr);
}
}
if(0 != (iCnt%LEN))
{
while(0 != (iCnt%LEN))
{
ucaStr[iCnt%LEN] = ' ';
printf(" ");
++iCnt;
}
printf("%s│\n", ucaStr);
}
printf( "└────────┴────────────────────────────────────────────────────────────────┘\n");
close(iFile);
return 0;
}
|