2014-03-29 34 views
0

对于数组而言,我一直都会遇到下述错误:在selectLocation函数中,下标值既不是指针也不是矢量。这只是什么是一个井字棋计划的开始。我究竟做错了什么?既不是参数,也不是指针

void selectLocation(char board[],int choice); 
void displayBoard(char[]); 
#include <stdio.h> 

int main() 
{ 
    char board[3][3]; 
    int i; 

    for (i=0;i<8;i++) 
    { 
     displayBoard(board); 
     selectLocation(board,i); 
    } 

return 0; 
} 

void displayBoard(char board[]) 
{ 
    printf(" 0 1 2"); 
    printf("\n --- --- --- "); 
    printf("\n0 | | | |"); 
    printf("\n --- --- --- "); 
    printf("\n1 | | | |"); 
    printf("\n --- --- --- "); 
    printf("\n2 | | | |"); 
    printf("\n --- --- --- "); 
} 

void selectLocation(char board[],int choice) 
{ 
    int x,y; 

    printf("Enter a location for X or O in x,x format"); 
    printf("\nex. '0,1' '1,2'"); 
    scanf("%d,%d",&x,&y); 

    if (choice%2==1) 
    { 
     board[x][y]='X'; 
    } 
    else 
    { 
     board[x][y]='O'; 
    } 
} 
+0

LearningC给你正确的答案,另一个问题是,你不检查结果'scanf'(如果用户输入“abc,def”,你可能会遇到麻烦) –

回答

2
board[x][y]='X'; 

板是不是一个二维数组,在那里你得到这个错误。

board[x] 

只是有效的。因为你收到了一个char数组而不是2D数组。
因此改变函数的签名都定义和申报接收二维数组,

void selectLocation(char board[][3],int choice) 
{ 
    int x,y; 
    ... 

void displayBoard(char board[][3]) 
{ 
+0

现在它显示数组类型的元素类型不完整。 – alwaysLearning

+0

@BobbyII在哪个函数中? – LearningC

+0

selectLocation() – alwaysLearning

相关问题