怎样用C语言获取屏幕上指定位置处的字符的值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样用C语言获取屏幕上指定位置处的字符的值?相关的知识,希望对你有一定的参考价值。

我在用C语言做一个贪食蛇的游戏,但是当蛇要碰到自己的身体的时候不知该怎么判断,经过思考,我认为应该看蛇的头部经过的地方是否有代表蛇的身体的特定字符的存在,如果有。说明它碰到了自己的身体,则游戏结束,反之没有。因此必须得到蛇的头部所经之处的字符信息,请各位帮帮忙,谢谢!

一、屏幕操作函数
1. clrscr()清除字符窗口函数
2. window()字符窗口函数
3. gotoxy()光标定位函数
4. clreol() 清除光标行尾字符函数
5. insline() 插入空行函数
6. delline() 删除一行函数
7. gettext() 拷进文字函数
8. puttext() 拷出文字函数
9. movetext() 移动文字函数
二、字符属性函数
10. textmode() 文本模式函数
11. highvideo()高亮度函数
12. lowvideo() 低亮度函数
13. normvideo(void);
14. textcolor() 文本颜色函数
15. textattr() 文本属性函数
16.textbackground() 文本背景函数
三、 屏显状态函数
17. wherex() 光标处x坐标函数
18. wherey() 光标处y坐标函数
19. gettextinfo() 获取文本窗口信息函数
2. window()字符窗口函数
功能: 函数window()用于在指定位置建立一个字符窗口。
用法: 此函数调用方式为 void window(int left,int top,int right,int bottom);
说明: 函数中参数left,top为窗口左上角坐标;right,bottom为其右下角坐标。
若有一个坐标是无效的,则window()函数不起作用。一旦该函数调用成功,那么所有定位坐标都是相对于窗口的,而不是相对于整个屏幕。但是建立窗口所用的坐标总是相对整个屏幕的绝对坐标,而不是相对当前窗口的相对坐标。这样用户就可以根据各种需要建立多个互不嵌套的窗口。
此函数的头文件为conio.h。
返回值:无
例: 调用这个函数的实现例见3.gotoxy()函数的例子中。
. gotoxy()光标定位函数
功能: 函数gotoxy()将字屏幕上的光标移到当前窗口指定的位置上。
用法: 这个函数调用方式为void gotoxy(int x,int y);
说明: 括号里x,y是, 光标定位的坐标,如果其中一个坐标值无效(如坐标超界),那么光标不会移动。
此函数在字符状态(有时称为文本状态)下经常用到 ,其相应的头文件为conio.h
返回值:无
例: 下面程序建立两个窗口,然后在窗口里显示字符,字符的位置是调用该函数确定的。
#include"conio.h>
void border(int startx,int starty,int endx,int endy)

register int i;
gotoxy(1,1);
for(i=0;i<=endx-startx;i++)
putch('-');
gotoxy(1,endy-starty);
for(i=0;i<=endx-startx;i++)
putch('-');
for(i=2;i<=endy-starty;i++)
gotoxy(1,i);
putch('1');
gotoxy(endx-startx+1,i);
putch('1');



main()

void border(int,int,int,int);
clrscr();
window(6,8,38,12);
border(6,8,38,12);
gotoxy(2,2);
printf("window 1");
window(8,16,40,24);
border(8,16,40,24);
gotoxy(3,2);
printf("window 2");
getch();

三、 屏显状态函数
这里提供三个在文本模式下屏幕显示状态的函数

17. wherex() 光标处x坐标函数
功能: 函数wherex()返回当前窗口中光标处横向坐标。
用法: 此函数调用方式为int wherex(void);
说明: 这个函数调用无参数,其对应的头文件是conio.h
返回值: 函数调用成功,返回光标处x坐标值。
例: 调用这个函数的实例见18.wherey()函数的例中。

18. wherey() 光标处y坐标函数
功能: 函数wherey()返回当前窗口中光标处纵向坐标。
用法: 该函数调用方式为int wherey(void);
说明: 此函数调用无参数,其相应的头文件是conio.h
返回值: 函数调用成功,返回光标处y坐标值。
例: 调作函数wherex()与wherey(),返回当前光标处x坐标与y坐标,并赋给整型变量xpos ,ypos。
int xpos,ypos;
xpos=wherex();
ypos=wherey();

19. gettextinfo() 获取文本窗口信息函数
功能: 函数gettextinfo()获取当前文本窗口信息,并存放在实参结构中。
用法: 函数调用方式为void gettextinfo(struct text-info *info);
说明: 函数中参数info 为struct text-info结构型指针,struct text-info结构在此函数相应的头文件中定义为:
struct text-info
unsigned char winleft; // 窗口左上角x坐标
unsigned char wintop; // 窗口左上角y坐标
unsigned char winright; // 窗口右下角x坐标
unsigned char winbottom; // 窗口右下角y坐标
unsigned char attribute; // 文本属性
unsigned char normattr; // 正常属性
unsigned char currmode; // 当前屏显模式
unsigned char screenhight // 文本窗口高度(以行数计)
unsigned char screenwidth; // 文本窗口宽度(以字符个数计)
unsigned char curx; // 光标处x坐标
unsigned char cury; // 光标处y坐标
;
记住,调用函数gettextinfo()时,要传递struct text-info结构型指针或该结构的首地址,不要传递结构变量本身。
这个函数对应的头文件是conio.h
返回值: 返回文本窗口角点坐标、高宽度、文本属性等值,并存放在info所指向的结构变量中。
例: 程序语句说明如何正确调用gettextinfo()函数:
struct text-info win-status;
gettextinfo(&win-status);
参考技术A 要包含这两个头文件才可以
#include<stdio.h>
#include <conio.h>
#include <stdlib.h>

void main()

FILE *fp;
char ch;
if((fp=fopen("string","wt+"))==NULL)

printf("Cannot open file strike any key exit!");
getch();
exit(1);

printf("input a string:\n");
ch=getchar();
while (ch!='\n')

fputc(ch,fp);
ch=getchar();

rewind(fp);
ch=fgetc(fp);
while(ch!=EOF)

putchar(ch);
ch=fgetc(fp);

printf("\n");
fclose(fp);


getch定义在conio.h里面

exit声明在stdlib.h里面
上面是我编译好了的文件
你运行一下就可以了本回答被提问者采纳

在linux的shell语言中,怎样用正则表达式来截取字符串?

比如说,有一串字符串“a=1 b=2 c=3”或者"a=abc b=bcd c=cde"
注意:,里面的空格个数不定
我想从中取得a、b、c的值。
要求:
要用正则表达式,取出"a="和" "之间的值、取出"b="和" "之间的值、取出"c="和" "之间的值。
例如上例中的字符串取出来是:1 2 3或abc bcd cde

参考技术A str=""
user=`echo $str | awk 'BEGIN'`
id=`echo $str | awk 'BEGIN'`
addr=`echo $str | awk -F? ''`
本回答被提问者和网友采纳
参考技术B echo "a=1 b=2 c=3"|sed -e 's/ /=/g'|awk -F= 'print $2 $4 $6'

下面这个更准确
echo "a=1 b=2 c=3"|sed 's/[[:space:]]\+/=/g'|awk -F= 'print $2 $4 $6'
参考技术C echo "a=abc b=bcd c=cde" | sed 's/=/ /g' | awk 'print $2,$4,$6'

参考资料:http://luckyy.net/linux/shell%E7%AC%94%E8%AE%B0awk.html

参考技术D perl -le 'print $_ for split /\w=/, "a=1 b=2 c=3"'

以上是关于怎样用C语言获取屏幕上指定位置处的字符的值?的主要内容,如果未能解决你的问题,请参考以下文章

怎样用C语言编写个爱心图象

c语言的程序是怎样在屏幕上输出的?

c语言中怎样通过索引获取结构体成员的值

c语言提取文件的值

C语言光标移动

c语言用指针法在一个字符串的指定位置插入一个字符串