[英]how can i fix these errors in c?
I keep getting these errors. 我不断收到这些错误。 Im trying to make a mine sweeper like game.
我试图制作像游戏一样的扫雷器。
well.c: In function 'main': well.c:170: warning: passing argument 1 of 'bombCheck' makes pointer from integer without a cast well.c:170: warning: passing argument 3 of 'bombCheck' makes integer from pointer without a cast well.c: In function 'fillGameBoard': well.c:196: error: expected declaration or statement at end of input
#include <stdio.h>
#include <stdlib.h>
#define Rows 5
#define Columns 5
#define Bombs 5
void introduction(void)
{
puts("Welcome to the minefield!");
puts("In this level 2 game, you will win by choosing.");
puts("all of the viable wells and not any of the.");
puts("tool breaker spaces. In both games, there are.");
puts("20 viable spaces and 5 tool breakers!");
puts("Have fun and good luck!");
}
void fillGameBoard(char gameBoard[][Columns])
{
int i, j;
FILE *inputFile;
char gameDataFileName[30];
int yes = 0;
do
{
printf("choose your spot");
printf("\nfield1 field2\n");
scanf(" %s",&gameDataFileName);
if ((inputFile = fopen(gameDataFileName,"r")) == NULL)
{
puts("\nWrong input! Try again!");
puts("check spelling, spacing, etc. make it exact!");
}
else
{
yes = 1;
}
} while (yes == 0);
for (i=0; i<Rows; i++)
{
for (j=0; j<Columns; j++)
{
fscanf(inputFile, " %c", &gameBoard[i][j]);
}
fclose(inputFile);
return;
}
void fillUserBoard(char userBoard[][Columns])
{
int i,j; // counters
for (i=0; i<Rows; i++)
{
for (j=0; j<Columns; j++)
{
userBoard[i][j] = '~';
}
}
return;
}
void displayBoard(char board[][Columns])
{
int i, j;
printf("\n ");
for (i = 1; i <= Rows; i++)
{
printf("%d ",i+5);
}
puts("");
for (i = 0; i <=Rows; i++)
{
printf("__");
}
puts("");
for (i=0; i<Rows; i++)
{
printf("%d|",(i+1));
for (j=0; j<Columns; j++)
{
printf(" %c", board[i][j]);
}
puts("");
}
return;
}
char bombCheck (char board[][Columns], int a, int b)
{
char gameOver;
if (board[a][b] == '*')
{
puts("");
puts(" BOOM");
puts("You hit a mine.");
puts("you are deaded.\n");
puts(" GAME OVER!!\n");
gameOver = 'y';
}
else
{
gameOver = 'n';
}
return gameOver;
}
int main (void)
{
char gameBoard[Columns][Rows];
char userBoard[Columns][Rows];
char done;
char win;
char gameOver;
int count;
int i;
int col;
int row;
introduction();
do
{
done=win='n';
count=0;
fillGameBoard(gameBoard);
fillUserBoard(gameBoard);
displayboard(userBoard);
bombcheck();
do
{
displayBoard(userBoard);
printf("choose your column, numbered 1-5\n");
scanf(" %i", &col);
printf("choose your row, numbered 1-5\n");
scanf(" %i", &row);
done = bombCheck(col, row, gameBoard);
if (done='n')
{
count+1;
if (count==((Columns*Rows)-Bombs))
{
printf("you win!\n");
done='y';
}
else
{
done='n';
userBoard[col][row]=gameBoard[col][row];
}
}
} while (done != 'y');
printf("do you want to play again? y/n \n");
scanf(" %c", win);
}while (win != 'y');
return 0;
}
You're missing a brace in fillGameBoard()
. 您在
fillGameBoard()
缺少括号。
for (i=0; i<Rows; i++) { for (j=0; j<Columns; j++) { fscanf(inputFile, " %c", &gameBoard[i][j]); } /* Note closing brace! */ } fclose(inputFile);
You're passing the arguments to bombCheck()
in the wrong order. 您正在以错误的顺序将参数传递给
bombCheck()
。
/* Declared: char bombCheck (char board[][Columns], int a, int b) */ done = bombCheck(gameBoard, col, row);
What's with the bombcheck()
call with no arguments? 没有参数的
bombcheck()
调用是什么? Note that bombcheck()
is different from bombCheck()
. 请注意,
bombcheck()
与bombCheck()
不同。 The C programming language is case-sensitive. C编程语言区分大小写。
For future reference, post only the minimal code snippets relevant to your question, instead of an entire program. 为了将来参考,请仅张贴与您的问题相关的最小代码段,而不是整个程序。
Case matters in C. bombcheck
is not the same as bombCheck
. C.
bombcheck
大小写问题与bombCheck
。
Argument order matters. 参数顺序很重要。 You have declared
bombCheck
with (board, a, b)
but are calling it with (col, row, board)
. 您已经使用
(board, a, b)
声明了bombCheck
,但是使用(col, row, board)
对其进行了调用。
Taking the address of an array is redundant. 获取数组的地址是多余的。 The
&
is not necessary in scanf("%s",gameDataFileName);
在
scanf("%s",gameDataFileName);
不需要&
scanf("%s",gameDataFileName);
scanf
with %s
is pretty unsafe. 用
%s
scanf
是非常不安全的。 Watch what happens if you type in more than 30 characters (perhaps substantially more). 注意如果您输入的字符超过30个(可能更多),会发生什么情况。 Try
fgets
instead. 尝试使用
fgets
。
You're missing a closing brace in fillGameBoard
(probably in the second inner for
loop). 您在
fillGameBoard
缺少一个fillGameBoard
括号(可能在第二个内部for
循环中)。
Your indenting is inconsistent in some places, particularly where you have left aligned return
statements (and some other statements at the end of blocks). 您的缩进在某些地方是不一致的,特别是在您保留对齐的
return
语句(以及在块末尾的其他一些语句)的地方。
Overall, this is a pretty good beginner program. 总的来说,这是一个不错的初学者程序。 Keep at it, and you'll get familiar with those compiler errors in no time!
坚持下去,您将立即熟悉那些编译器错误!
缺少结束括号}
以结束fillGameBoard
函数。
开括号和闭括号的数量不累加。
line 170: wrong order of arguments 第170行:参数顺序错误
line 51: missing } 第51行:缺少}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.