1
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() 函数。我找不到导致此错误的原因。请帮助。谢谢。

4

3 回答 3

6

trd是一个int数组。int没有成员nx.

将函数签名修复为int hit(TSK trd[], int life, int ply)

于 2013-01-10T11:21:59.623 回答
5

这是编译时错误,而不是运行时错误。发生这种情况是因为您试图访问.x.y类型数组的元素int[]。整数不是structs,它们没有字段xand y,所以编译器会告诉你这是一个错误。

最可能的修复应该是更改函数的trd数组参数的类型,hit如下所示:

int hit(TSK trd[],int life, int ply) {
    ...
}

请注意,由于您在声明之前使用该函数,因此您应该在顶部添加一个原型。

于 2013-01-10T11:22:11.807 回答
2

在您的hit函数中,trd参数是一个ints 数组。您的意思是改为使用类型参数TSK[]吗?

于 2013-01-10T11:22:03.507 回答