今天做个练习,把一个文件的扇区,用类似debug形式显示出来,程序很简单,但是在显示时,a不能显示成0A,用%2x格式只能显示成a,换成%02x显示成0a,再改成%02X,显示成功,哈哈,这些内容书上看不到呀
# include "stdio.h"
# include "ctype.h"
# include "stdlib.h"
# define SIZE 128
void display(unsigned char *p) //p是显示初始地址
{ int i,j;
for (i=0;i<8;i++) {
for (j=0;j<16;j++) {
printf(" %02X",p[16*i+j]);
if (7==j) printf(" -");
}
printf(" ");
for (j=0;j<16;j++)
if (isprint(*(p+16*i+j)))
printf("%c",*(p+16*i+j));
else
printf(".");
printf("\n");
}
}
void main(int argc,char **argv)
{ FILE *fp;
unsigned char buf[SIZE];
int sect,read_num;
if (2!=argc) {printf("This program need a filename.\n"); exit(1); }
if (NULL==(fp=fopen(argv[1],"rb"))) {printf("Can't open file.\n"); exit(1); }
do {
printf("enter secter:");
scanf("%d",§);
if (fseek(fp,sect*SIZE,SEEK_SET)) {printf("fseek error.\n"); exit(1);}
if (SIZE!=(read_num=fread(buf,1,SIZE,fp))) {printf("EOF reached.\n"); exit(1); }
display(buf);
} while (sect>=0) ;
}