typedef struct tsk{
int x;
int n;
}TSK;
TSK trd[MAX];
main(){
while(life!=0){
randomize();
for(i=0;i<MAX;i++){
trd[i].n=rand()%40+10;
if(trd[i].n<10||trd[i].n>45)
trd[i].n=rand()%40+10;
trd[i].x=25;
}
for(m=0;m<MAX;m++){
gotoxy(8,m);printf("%c%c",23,23);
gotoxy(7,m);printf("%c",17);
gotoxy(46,m);printf("%c%c",23,23);
gotoxy(48,m);printf("%c",16);
}
for(j=0;j<MAX;j++){
if(life==0)
break;
gotoxy(1,1);
insline();
gotoxy(trd[j].n,1);
printf("%c",3);
trd[j].x--;
gotoxy(ply,25);
printf("%c",1);
gotoxy(1,26);
delline();
score++;
life=hit(trd,life,ply);
gotoxy(57,25);
printf("SCORE: %0.0f LIFE: %d",score,life);
gotoxy(8,1);printf("%c%c",23,23);
gotoxy(46,1);printf("%c%c",23,23);
gotoxy(7,1);printf("%c",17);
gotoxy(48,1);printf("%c",16);
gotoxy(4,1);printf("%c",label[j]);
delay(200);
if(kbhit()){
key=getch();
key=toupper(key);
if(key==27)
life=0;
if(key=='L')
ply++;
if(ply==46)
ply--;
else if(key=='K')
ply--;
if(ply==9)
ply++;
}
}
}
}
int hit(int trd[],int life, int ply){
int i;
for(i=0;i<MAX;i++){
if((trd[i].n==ply)&&(trd[i].x==0))
life-=1;
}
return life;
}
任何人都可以帮我解决此错误:左侧所需的结构。要么 。*?当我运行程序时,它给了我这个错误,它指向hit()函数。我无法找到导致此错误的原因。请帮助。谢谢。
答案 0 :(得分:6)
trd
是一个int
数组。 int
没有会员n
或x
。
将功能签名修复为int hit(TSK trd[], int life, int ply)
答案 1 :(得分:5)
这是编译时错误,而不是运行时错误。之所以会发生这种情况,是因为您尝试访问.x
类型数组元素的.y
和int[]
。整数不是struct
,它们没有字段x
和y
,因此编译器会告诉您这是一个错误。
最可能的修复方法应该是更改trd
函数的hit
数组参数的类型,如下所示:
int hit(TSK trd[],int life, int ply) {
...
}
请注意,由于您在声明之前使用了该功能,因此您应该在顶部添加原型。
答案 2 :(得分:2)
在hit
函数中,trd
参数是int
的数组。您的意思是改为使用TSK[]
类型的参数吗?