小弟菜鸟,新得一程序,调试7警告,一错误,不知道怎么解决,请高手大哥帮忙调试解决问题,在线请教!!!

hollyjoy 2005-06-24 05:22:44
#include<graphics.h>
#include<stdlib.h>
#include<stdio.h>
#include<dos.h>
union REGS r;
int s=0;
int xtop,ytop,xbottom,ybottom;

void drawrh(int x,int y)
{line(x,y,x+15,y);
line(x+15,y-5,x+15,y+5);
line(x+15,y-5,x+35,y-5);
line(x+15,y+5,x+35,y+5);
line(x+35,y-5,x+35,y+5);
line(x+35,y,x+50,y);
}

void mouse(int x,int y)
{
line(x-5,y,x+5,y);
line(x,y-5,x,y+5);
}
void read(int *x,int *y,int *mbutt,int *oldx,int *oldy)
{
*oldx=*x;
*oldy=*y;
do
{r.x.ax=3;
int86(51,&r,&r);
*x=r.x.cx;
*y=r.x.dx;
*mbutt=r.x.bx;
}while(*x==*oldx&&*y==*oldy&&*mbutt==0);
}

void tuo(int *butt,int *mx,int *my,int *ox,int *oy)
{
char *p;
while(*butt==1)
{
mouse(*ox,*oy);
if(s==0)
{
s=1;
drawrh(*mx,*my);
}
read(mx,my,butt,ox,oy);
drawrh(*ox,*oy);
drawrh(*mx,*my);
mouse(*mx,*my);
bar(5,5,100,25);
scanf(p,"%d %d",*mx,*my);
outtextxy(10,10,p);
outtextxy(60,10,stry);
}
xtop=(*mx);ytop=(*my-5);
xbottom=(*mx+50);ybottom=(*my+5);
}

void main()
{
int mx,my,ox,oy;
int butt;
char *strx,*stry;
int gd=DETECT,gm;
registerbgidriver( EGAVGA_driver );
initgraph(&gd,&gm,"e:\\tc\\bgi");
drawrh(50,130);
setwritemode(XOR_PUT);
r.x.ax=3;
int86(51,&r,&r);
mx=r.x.dx;
my=r.x.cx;
butt=r.x.bx;
mouse(mx,my);
setfillstyle(1,BLACK);
for(;;)
{
bar(5,5,100,25);
scanf(strx,"%d",mx);
scanf(stry,"%d",my);
outtextxy(10,10,strx);
outtextxy(60,10,stry);
read(&mx,&my,&butt,&ox,&oy);
mouse(mx,my);
delay(20);
if((s==0)&&mx>50&&mx<100&&my>125&&my<135&&butt==1)
{

tuo(&butt,&mx,&my,&ox,&oy);

}
if(s==1&&mx>(xtop)&&mx<(xbottom)&&my<(ybottom)&&my>(ytop)&&butt==1)
{
drawrh(xtop,ytop+5);
s=0;
tuo(&butt,&mx,&my,&ox,&oy);

}
mouse(ox,oy);
mouse(mx,my);
if(butt==2)
{
closegraph();
exit(0);
}
}
}

PS:这程序的问题是(利用光标作图程序)想请教一下高手们一下,这程序是不是能达到这目的,还有scanf输出语句( scanf(p,"%d %d",*mx,*my);)里面是不是能用 *mx,*my ?而不是用&mx,&my?前者可行吗?
PS:这调试是出的七警告一错误,我觉得是一个地方的错误才导致的,不知道是不是这原因,请各位高手大哥一定调试解答,小弟急于知道答案!!!
PS:( initgraph(&gd,&gm,"e:\\tc\\bgi");这句话是什么意思,不懂!!!汗~~~~另(union REGS r;)这句也不懂,但见好多程序也用了的,小弟初学,请一定帮忙解答!!!谢谢各位
...全文
138 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
brianlu 2005-06-27
  • 打赏
  • 举报
回复
帮你顶顶
caojunliang 2005-06-27
  • 打赏
  • 举报
回复
建议不要重复别人的内容,浪费时间
foochow 2005-06-25
  • 打赏
  • 举报
回复
怎么上不了CSDN,郁闷
helixhouse 2005-06-25
  • 打赏
  • 举报
回复
1.关于Scanf的使用:
"scanf输出语句( scanf(p,"%d %d",*mx,*my);)里面是不是能用 *mx,*my ?而不是用&mx,&my?前者 可行吗?"
Scanf函数必须读入到一个地址.
因为int mx,my;
所以scanf(p,"%d %d",*mx,*my)肯定会出错,因为只有指针才可以取*操作
应该为scanf(p,"%d %d",&mx,&my).
2. initgraph(&gd,&gm,"e:\\tc\\bgi");
int device=DETECT,mode=0.
一般使用initgraph(&device,&mode,"")
这样使用方便,因为TC中默认的为DOS模式为命令行,绘图用进入图形模式,所以要进行图形模式的初 始化
但是在产生的可执行文件如有要运行,还需要其他一些文件.
这有两种方式可以解决
1)initgraph(&device,&mode,"TC的路径")
2)把下面的文件和可执行文件放在同一个路径下边
ATT.BGI CGA.BGI EGAVGA.BGI HERC.BGI
tfq 2005-06-24
  • 打赏
  • 举报
回复
联合体。
tfq 2005-06-24
  • 打赏
  • 举报
回复
"scanf输出语句( scanf(p,"%d %d",*mx,*my);)里面是不是能用 *mx,*my ?而不是用&mx,&my?前者 可行吗?"
------------
这样:sscanf(strx,"%d",mx);sscanf(stry,"%d",my); /* 已定义int *mx,*my;*/
并且这样定义:char strx[20],stry[20];如定义指针未分配空间就使用当然警告。长度自己定

initgraph(&gd,&gm,"e:\\tc\\bgi");
---------
tc放在哪就设在哪。一般空


(union REGS r;)这句也不懂,但见好多程序也用了的,小弟初学,请一定帮忙解答!!!谢谢各位
寄存器的一个结构体。
  • 打赏
  • 举报
回复
不懂,学习
foochow 2005-06-24
  • 打赏
  • 举报
回复
DING
caojunliang 2005-06-24
  • 打赏
  • 举报
回复
1.关于Scanf的使用:
"scanf输出语句( scanf(p,"%d %d",*mx,*my);)里面是不是能用 *mx,*my ?而不是用&mx,&my?前者 可行吗?"
Scanf函数必须读入到一个地址.
因为int mx,my;
所以scanf(p,"%d %d",*mx,*my)肯定会出错,因为只有指针才可以取*操作
应该为scanf(p,"%d %d",&mx,&my).
2. initgraph(&gd,&gm,"e:\\tc\\bgi");
int device=DETECT,mode=0.
一般使用initgraph(&device,&mode,"")
这样使用方便,因为TC中默认的为DOS模式为命令行,绘图用进入图形模式,所以要进行图形模式的初 始化
但是在产生的可执行文件如有要运行,还需要其他一些文件.
这有两种方式可以解决
1)initgraph(&device,&mode,"TC的路径")
2)把下面的文件和可执行文件放在同一个路径下边
ATT.BGI CGA.BGI EGAVGA.BGI HERC.BGI
Audi_TT 2005-06-24
  • 打赏
  • 举报
回复
沙发~~~
帮顶!

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧