[January , 19, 2008] Watcom C 的笔记3 Watcom C (3)

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

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注