Watcom C 的笔记3 Watcom C (3)
Watcom C 显示指定内存位置的值
终于完成了显示指定内存位置的程序,在XP下显示1MB以内的没有问题,最高
可能到16MB吧,应该和cmd.exe的设置有关系,但是不确定。WC没有DOS下面的IDE
环境,用起来没有TC顺手。
下面是程序代码,这个程序在TC3下无法正常工作,估计是因为TC使用的还是
segment:offset的内存形式而不是线性的。
#include <stdio.h>
#include <ctype.h>
int main()
{
unsigned long int address;
unsigned char *data;
unsigned int i,j;
printf("Please Input the address:");
scanf("%lx",&address); //取得地址,按照16进制输入,无论前面是否有0x都认为是
//十六进制
for (i=0;i<0x10 ;i++ )
{
printf("%08lxh ",address); //输出8位长的十六进制
for (j=0;j<0x10;j++)
{
data=(unsigned char*)(address+j);
printf( "%02X ",*data); //输出2位大写的十六进制字符串
}
for (j=0;j<0x10;j++)
{
data=(unsigned char*)(address+j);
if (isprint(*data)) //如果是可以显示的字符,则输出
{printf( "%c",*data);}
else
{printf(".");}
}
printf("\n");
address+=0x10;
}
return( 0 );
}
//后面要记得留一个空行
前面不添加 #include <ctype.h> 在编译过程中会出现一个warning
GETCHAR.C(23): Warning! W131: No prototype found for function 'isprint'
不过对编译结果没有影响~ 错误代码 W131 可以在 cguide.pdf 上查到。
界面不是很漂亮,有空再研究一下Turbo Vision好了~
2008-1-9