我一直在try 制作一个tic-tac-toe的游戏,它从用户的输入中打印出一块棋盘,我已经设法保存了棋盘的当前状态、网格的大小和轮数. 但当我试图加载这些数据时,出于某种原因,我无法从.txt文件中获取要加载的电路板的状态.
void FileLoad(char ***Board, int *x, int *y, int *roundcount, const char *filename) {
FILE *Load =fopen(filename, "r");
if (Load == NULL) {
printf("Error");
return;
}
fscanf(Load, "%d", *roundcount);
fgetc(Load);
fscanf(Load, "%d %d ", *x, *y);
*Board = (char **)malloc(*y * sizeof(char *));
(*Board)[0] = (char *)malloc((*y * *x) * sizeof(char));
for (int i = 1; i < *y; ++i)
(*Board)[i] = (*Board)[0] + i * *x;
fgetc(Load);
for (int i = 0; i < *y; ++i) {
for (int j = 0; j < *x; ++j)
fscanf(Load, "%c", &(*Board)[i][j]);
fgetc(Load);
}
fclose(Load);
}
使用调试器时,当我try 使用fscanf
获取数据时,我发现问题的根源是代码的最后几行,但我不知道如何解决这个问题.
这是保存文件在5*5网格上的外观,其中包含一些放置的字符.第一个数字用于计数,其余数字用于棋盘的网格.
2
5 5
X
O