各位大侠,我初学c++的老白兔,今天第一次上来,请教了。
函数splitmsg中我试图将参数str分解成三个内容:第一个是要移动的点A/B/C...(大写),第二个是要移动的轴x/y(小写),第三个参数是移动的步长。
函数返回一个字符串。头文件中已经定义了的public变量如下:
char CurPoint[2], CurAxis[2];
int CurMove;
DWORD Ax,Ay,Bx,By,Cx,Cy,Dx,Dy,Ox,Oy;
DWORD Wx,Wy; //当前正处理的坐标
我希望从得到的三个变量中的头两个确定要移动的点、轴和移动的步长
char* Timer::splitmsg(char* str){
//传过来的字符串格式:(A,x,-1)/(D,D,0)/(B,y,12)
char *rtnstr="";
if(str==NULL) return rtnstr;
char *ObjProperty[8]={"A","B","C","D","O","x","y"}; //坐标对象
char *objn, *objs,*obja;
sscanf(str,"%[^,],%[^,],%[^#]",&objn,&objs,&obja);
sprintf(CurPoint,"%s",&objn);
sprintf(CurAxis,"%s",&objs);
CurMove = (int)&obja;
rtnstr=CurPoint;
//目前为止正常
if(strcmp(ObjProperty[0],CurPoint)==0){
Wx=Ax;
Wy=Ay;
}
if(strcmp(ObjProperty[1],CurPoint)==0){
Wx=Bx;
Wy=By;
}
if(strcmp(ObjProperty[2],CurPoint)==0){
Wx=Cx;
Wy=Cy;
}
if(strcmp(ObjProperty[3],CurPoint)==0){
Wx=Dx;
Wy=Dy;
}
if(strcmp(ObjProperty[4],CurPoint)==0){
Wx=Ox;
Wy=Oy;
}
//目前为止都正常,可是无法将移动步长加入到所确定的目标坐标中,
if(Wx>0 && Wy>0 && abs(CurMove)>0){
if(strcmp(ObjProperty[5],CurAxis)==0){
//Wx = Wx+CurMove; //出问题的地方
}
if(strcmp(ObjProperty[6],CurAxis)==0){
//Wy = Wy+CurMove; //出问题的地方
}
}
return rtnstr;
}
请问:
1、为什么坐标Wx和Wy不能修改?使用常数Wx = Wx+1都不行。我该如何修改?
2、我的变量定义是否有问题?如果将开始的三个变量char CurPoint[2], CurAxis[2],int CurMove不是定义成public,
而是在函数中定义的话,我的后续过程连坐标点都找不到,且程序会崩溃。为什么?
谢谢了!