【发布时间】:2016-03-19 05:54:16
【问题描述】:
我一直在做一个简单的 C 跳棋游戏。
我希望函数 cargar_partida(加载游戏)读取一个文本文件,其中包含代表游戏中每个位置的数字列表(总共 64 个)。
1代表可以占用的空白,0代表不能占用的空白,2代表白色,3代表黑色。 FIL 和 COL 值为 8。
函数如下:
int cargar_partida(int *turno, int *tablanueva[FIL][COL]) {
int i, j;
FILE * archivo;
archivo = fopen("partida.txt", "r");
if (archivo == NULL) {
printf("Error al abrir el archivo.\n");
exit(0);
}
fscanf(archivo, "%d", turno);
for (i = 0; i < FIL; i++) {
for (j = 0; j < COL; j++) {
fscanf(archivo, "%d", tablanueva[i][j]);
}
}
}
变量turno(转为英文)已正确加载,但二维数组tablanueva(新数组)未正确加载。
注意:在文件 partida.txt 中,变量 turno 是第一个出现的变量,其他值分别出现在不同的行中。
这是初始数组,必须在调用 cargar_partida 时更改。问题是该功能不会改变它。数组的声明位于 main 函数中。
int tabla[FIL][COL] = {
{0, N, 0, N, 0, N, 0, N},
{N, 0, N, 0, N, 0, N, 0},
{0, N, 0, N, 0, N, 0, N},
{VAL, 0, VAL, 0, VAL, 0, VAL, 0},
{0, VAL, 0, VAL, 0, VAL, 0, VAL},
{B, 0, B, 0, B, 0, B, 0},
{0, B, 0, B, 0, B, 0, B},
{B, 0, B, 0, B, 0, B, 0},
};
这就是函数的调用方式。
cargar_partida(&opcion, tabla);
【问题讨论】:
-
main中的二维数组是如何声明的?
-
@matts 这是第二段代码(不确定你是不是这个意思)
标签: c arrays function arguments