如何判断c语言运行后的界面中的某个位置的字符

来源:百度知道 编辑:UC知道 时间:2024/06/08 23:42:53
如何判断c语言运行后的界面中的某个位置的字符
我是想在某个位置如果有字符的话,就替换成空格,没有字符的话,printf一个字符。那怎么判断呢?

用gettext()和puttext()

int gettext(int x1, int y1, int x2, int y2, void *buffer);

gettext()把给出坐标范围内的屏幕内容存放到内存当中。

屏幕上每个位置占16位,字符的ASCII码存放在高8位,低8位是高8位所表示的字符的颜色。比如某个位置的字符是0x410C,0x41就是字符的ASCII码,0x0C就是字符的颜色。所以需要内存的大小总共为“行x列x2x8”位。因为char是8位,所以如果是char型指针,总共需要的存储空间是“行x列x2”个char的大小。例如char buf[10],如果buf[0]是一个字符,那么buf[1]就是buf[0]表示的字符的颜色,buf[2]是后一个字符。

puttext()的格式与gettext()相同。

下面的程序是把屏幕的空白区域都填上白色方块(ASCII码219的字符),并且把非空白的字符颜色改成亮蓝色。

#include <conio.h>

main()
{
int i;
char buf[80*25*2];/*分配存储空间*/

printf("a b c d e");

gettext(1,1,80,25,buf);/*获取屏幕内容到内存*/

for(i=0;i<4000;i+=2)
{
if(buf[i]!=32)buf[i+1]=11;/*如果该位置上字符不为空格,则修改它的颜色代码*/
}

for(i=0;i<4000;i+=2)
{
if(buf[i]==32)buf[i]=219;/*如果该位置上为空格,则将它改为ASCII码为219的字符*/
}

getch();

puttext(