请帮助我理解为什么以下代码无法编译:
#include <stdio.h>
//#include <iostream>
//using namespace std;
int main(void){
int i,k,x,y,run,e,r,s,m,count=0;
char numbers[19][19];
for(i=0;i<19;i++){
for (k=0;k<19;k++){
numbers[i][k]='.';
}
}
void drawB(){
printf(" 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 \n");
printf ("0 %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c \n\n"
,numbers[0][0],numbers[0][1],numbers[0][2],numbers[0][3],numbers[0][4],
numbers[0][5],numbers[0][6],numbers[0][7],numbers[0][8],numbers[0][9],
numbers[0][10],numbers[1][11],numbers[1][12],numbers[1][13],numbers[0][14]
,numbers[0][15],numbers[0][16],numbers[0][17],numbers[0][18]);
printf ("1 %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c \n\n"
,numbers[1][0],numbers[1][1],numbers[1][2],numbers[1][3],numbers[1][4],
numbers[1][5],numbers[1][6],numbers[1][7],numbers[1][8],numbers[1][9],
numbers[1][10],numbers[1][11],numbers[1][12],numbers[1][13],numbers[1][14]
,numbers[1][15],numbers[1][16],numbers[1][17],numbers[1][18]);
printf ("2 %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c \n\n"
numbers[2][0],numbers[2][1],numbers[2][2],numbers[2][3],numbers[2][4],
numbers[2][5],numbers[2][6],numbers[2][7],numbers[2][8],numbers[2][9],
numbers[2][10],numbers[2][11],numbers[2][12],numbers[2][13],numbers[2][14]
,numbers[2][15],numbers[2][16],numbers[2][17],numbers[2][18]);
printf ("3 %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c \n\n"
,numbers[3][0],numbers[3][1],numbers[3][2],numbers[3][3],numbers[3][4],
numbers[3][5],numbers[3][6],numbers[3][7],numbers[3][8],numbers[3][9],
numbers[3][10],numbers[3][11],numbers[3][12],numbers[3][13],numbers[3][14]
,numbers[3][15],numbers[3][16],numbers[3][17],numbers[3][18]);
printf ("4 %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c \n\n"
,numbers[4][0],numbers[4][1],numbers[4][2],numbers[4][3],numbers[4][4],
numbers[4][5],numbers[4][6],numbers[4][7],numbers[4][8],numbers[4][9],
numbers[4][10],numbers[4][11],numbers[4][12],numbers[4][13],numbers[4][14]
,numbers[4][15],numbers[4][16],numbers[4][17],numbers[4][18]);
printf ("5 %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c \n\n"
,numbers[5][0],numbers[5][1],numbers[5][2],numbers[5][3],numbers[5][4],
numbers[5][5],numbers[5][6],numbers[5][7],numbers[5][8],numbers[5][9],
numbers[5][10],numbers[5][11],numbers[5][12],numbers[5][13],numbers[5][14]
,numbers[5][15],numbers[5][16],numbers[5][17],numbers[5][18]);
printf ("6 %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c \n\n"
,numbers[6][0],numbers[6][1],numbers[6][2],numbers[6][3],numbers[6][4],
numbers[6][5],numbers[6][6],numbers[6][7],numbers[6][8],numbers[6][9],
numbers[6][10],numbers[6][11],numbers[6][12],numbers[6][13],numbers[6][14]
,numbers[6][15],numbers[6][16],numbers[6][17],numbers[6][18]);
printf ("7 %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c \n\n"
,numbers[7][0],numbers[7][1],numbers[7][2],numbers[7][3],numbers[7][4],
numbers[7][5],numbers[7][6],numbers[7][7],numbers[7][8],numbers[7][9],
numbers[7][10],numbers[7][11],numbers[7][12],numbers[7][13],numbers[7][14]
,numbers[7][15],numbers[7][16],numbers[7][17],numbers[7][18]);
printf ("8 %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c \n\n"
,numbers[8][0],numbers[8][1],numbers[8][2],numbers[8][3],numbers[8][4],
numbers[8][5],numbers[8][6],numbers[8][7],numbers[8][8],numbers[8][9],
numbers[8][10],numbers[8][11],numbers[8][12],numbers[8][13],numbers[8][14]
,numbers[8][15],numbers[8][16],numbers[8][17],numbers[8][18]);
printf ("9 %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c \n\n"
,numbers[9][0],numbers[9][1],numbers[9][2],numbers[9][3],numbers[9][4],
numbers[9][5],numbers[9][6],numbers[9][7],numbers[9][8],numbers[9][9],
numbers[9][10],numbers[9][11],numbers[9][12],numbers[9][13],numbers[9][14]
,numbers[9][15],numbers[9][16],numbers[9][17],numbers[9][18]);
printf ("0 %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c \n\n"
,numbers[10][0],numbers[10][1],numbers[10][2],numbers[10][3],numbers[10][4],
numbers[10][5],numbers[10][6],numbers[10][7],numbers[10][8],numbers[10][9],
numbers[10][10],numbers[10][11],numbers[10][12],numbers[10][13],numbers[10][14]
,numbers[10][15],numbers[10][16],numbers[10][17],numbers[10][18]);
printf ("1 %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c \n\n"
,numbers[11][0],numbers[11][1],numbers[11][2],numbers[11][3],numbers[11][4],
numbers[11][5],numbers[11][6],numbers[11][7],numbers[11][8],numbers[11][9],
numbers[11][10],numbers[11][11],numbers[11][12],numbers[11][13],numbers[11][14]
,numbers[11][15],numbers[11][16],numbers[11][17],numbers[11][18]);
printf ("2 %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c \n\n"
,numbers[12][0],numbers[12][1],numbers[12][2],numbers[12][3],numbers[12][4],
numbers[12][5],numbers[12][6],numbers[12][7],numbers[12][8],numbers[12][9],
numbers[12][10],numbers[12][11],numbers[12][12],numbers[12][13],numbers[12][14]
,numbers[12][15],numbers[12][16],numbers[12][17],numbers[12][18]);
printf ("3 %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c \n\n"
,numbers[13][0],numbers[13][1],numbers[13][2],numbers[13][3],numbers[13][4],
numbers[13][5],numbers[13][6],numbers[13][7],numbers[13][8],numbers[13][9],
numbers[13][10],numbers[13][11],numbers[13][12],numbers[13][13],numbers[13][14]
,numbers[13][15],numbers[13][16],numbers[13][17],numbers[13][18]);
printf ("4 %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c \n\n"
,numbers[14][0],numbers[14][1],numbers[14][2],numbers[14][3],numbers[14][4],
numbers[14][5],numbers[14][6],numbers[14][7],numbers[14][8],numbers[14][9],
numbers[14][10],numbers[14][11],numbers[14][12],numbers[14][13],numbers[14][14]
,numbers[14][15],numbers[14][16],numbers[14][17],numbers[14][18]);
printf ("5 %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c \n\n"
,numbers[15][0],numbers[15][1],numbers[15][2],numbers[15][3],numbers[15][4],
numbers[15][5],numbers[15][6],numbers[15][7],numbers[15][8],numbers[15][9],
numbers[15][10],numbers[15][11],numbers[15][12],numbers[15][13],numbers[15][14]
,numbers[15][15],numbers[15][16],numbers[15][17],numbers[15][18]);
printf ("6 %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c \n\n"
,numbers[16][0],numbers[16][1],numbers[16][2],numbers[16][3],numbers[16][4],
numbers[16][5],numbers[16][6],numbers[16][7],numbers[16][8],numbers[16][9],
numbers[16][10],numbers[16][11],numbers[16][12],numbers[16][13],numbers[16][14]
,numbers[16][15],numbers[16][16],numbers[16][17],numbers[16][18]);
printf ("7 %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c \n\n"
,numbers[17][0],numbers[17][1],numbers[17][2],numbers[17][3],numbers[17][4],
numbers[17][5],numbers[17][6],numbers[17][7],numbers[17][8],numbers[17][9],
numbers[17][10],numbers[17][11],numbers[17][12],numbers[17][13],numbers[17][14]
,numbers[17][15],numbers[17][16],numbers[17][17],numbers[17][18]);
printf ("8 %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c %c \n\n"
,numbers[18][0],numbers[18][1],numbers[18][2],numbers[18][3],numbers[18][4],
numbers[18][5],numbers[18][6],numbers[18][7],numbers[18][8],numbers[18][9],
numbers[18][10],numbers[18][11],numbers[18][12],numbers[18][13],numbers[18][14]
,numbers[18][15],numbers[18][16],numbers[18][17],numbers[18][18]);
}
void checkSurrounded (int x,int y){
//numbers [x-1,y-1 ] , numbers [x-1,y ] , numbers [x-1,y+1 ]
//numbers [x,y-1 ] , numbers [x,y ] , numbers [x,y+1 ]
//numbers [x+1,y-1, ] , numbers [x+1,y ] , numbers [x+1,y+1 ]
if(numbers[x][y]=='A'){
if((numbers[x-1][y-1]=='B') && (numbers[x-1][y]=='B') &&
(numbers[x-1][y+1]=='B') && (numbers[x][y-1]=='B') &&
(numbers[x][y+1]=='B') && (numbers[x+1][y-1]=='B') &&
(numbers[x+1][y]=='B')){
numbers[x][y]='B';}
}
if(numbers[x][y]=='B'){
if((numbers[x-1][y-1]=='A') && (numbers[x-1][y]=='A') &&
(numbers[x-1][y+1]=='A') && (numbers[x][y-1]=='A') &&
(numbers[x][y+1]=='A') && (numbers[x+1][y-1]=='A') &&
(numbers[x+1][y]=='A')){
numbers[x][y]='A';
}
}
}
/**
void checkArea(){
//detect enemy stone
//store in array
//find adjacent enemy stones
// store the enemy stones in the array
//keep on doing this until there are no more enemy stones that are adjacent
for (s=0;s<19;s++) {
for (m=0;m<19;m++) {
if (numbers[s][m]=='A'){
count++;
}
}
}
}//end fn
void checkAdjacent(int x, int y){
if (numbers [x][y]=='A'){
if((numbers[x][y-1]=='B' && numbers [x-1][y]=='B' && numbers[x][y+1]=='B' && numbers[x+1][y]=='B')){
}
}
}
void getUserInput(){
int run=1;
while(run){
printf("Enter x coordinate\n");
scanf("%d",&x);
printf("Enter y coordinate\n");
scanf("%d",&y);
if((x>18 || y>18 || x<0 || y<0) && !( numbers[x][y]=='.' )){
printf("invalid imput\n");
}
else{
numbers[x][y]='B';
run=0;
drawB();
}
}
}
*/
void getCupInput(){
//go through borad
//starting from [0][0]
//stop at first player stone
//save as target x and target y
//surround target x and target y
//if already surrounded
//start looking in borad again from last position
//at end of board reset to [0][0]
for(s=0;s<19;s++) {
for(m=0;m<19;m++) {
if (numbers[s][m]==0){
count++;
}
}
}
x=x-2;
y=y+2;
numbers[x][y]='A';
drawB();
}
while(1){
//getUserInput();
getCupInput();
}
system("pause");
return 0;
}
答案 0 :(得分:6)
在C
函数def中无法嵌套,这就是你正在做的事情:
int main(void){ // start of main fun def.
int i,k,x,y,run,e,r,s,m,count=0;
char numbers[19][19];
for(i=0;i<19;i++){
for (k=0;k<19;k++){
numbers[i][k]='.';
} // end of inner for loop.
} // end of outer for loop.
void drawB(){ //<--------- main() not yet completed..you've a new fun def.
答案 1 :(得分:3)
这看起来像是一个尝试Go的程序的开始(棋盘游戏,而不是最近的编程语言。)无论如何,这个代码有很多问题,但是如果没有编译,我可以至少看一个。删除了很多代码,你大致有这个:
int main(void) {
char numbers[19][19];
/* stuff */
}
void drawB(void) {
printf("...", ..., numbers[X][Y], ...);
}
在drawB
内部,代码无法在numbers
内看到main
的声明,因此编译器会给出一些关于未声明的变量drawB
的错误。您需要在numbers
之外移动main
声明,以便main
,drawB
和引用numbers
的所有其他函数都可以看到它
@unicornaddict已经指出你实际上嵌套了drawB
内main
的定义。也许你的意思是这样做,或者由于main内部的缩进不一致,它可能无法分辨。无论哪种方式,一旦你解决了嵌套问题,你就必须在你的函数之外移动numbers
的声明。所以,你的代码现在应该看起来像这样:
char numbers[19][19];
int main(void) {
/* stuff */
}
void drawB(void) {
printf("...", ..., numbers[X][Y], ...);
}