#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>

const int LINEBUF = 16;

int main(int argc,char **argv){
int fd=0;
char buf[LINEBUF];
if(argc < 2){
fprintf(stderr,"filename must be specified\n");
exit(8);
}
fd = open(argv[1],O_RDONLY);
if(fd == -1 ){
fprintf(stderr,"file open error\n");
exit(8);
}

while((read(fd,buf,LINEBUF))>0){
int i;
//linenumberprint
fprintf(stdout,"%02x ",buf[i]);

//hexdump
for(i = 0; i<LINEBUF ;i++ ){
if(buf[i] == '\0'){
continue;
}
if(buf[i] == EOF){
break;
}
//fprintf(stdout,"%c",buf[i]);
fprintf(stdout,"%02x ",buf[i]);
}
//charcterprint

for(i = 0; i<LINEBUF ;i++ ){
if(buf[i] == '\0'){
continue;
}
if(buf[i] == EOF){
break;
}

fprintf(stdout,"%c",buf[i]=='\n' || buf[i]=='\t' ? '.' : buf[i] );
//fprintf(stdout,"%02x ",buf[i]);
}

puts("");
}


close(fd);
return 0;

}