C 生活游戏,FileIO存储板

C 生活游戏,FileIO存储板,c,arrays,file-io,C,Arrays,File Io,在过去的4个小时左右,我一直在做这个,不知道该怎么办。我正在将我的生活游戏移植到C,无法让FileIO正常工作。输入文件的格式为: Game 1: Pattern Name 10 20 // Pattern here Game 2: Pattern Name 15 25 // Pattern here 依此类推,直到文件结束。我要做的是打印游戏,并为第一个游戏创建一个大小为10和20的多维数组,然后将图案存储在此数组中。以下是我目前掌握的情况: void fileIO() { FILE

在过去的4个小时左右,我一直在做这个,不知道该怎么办。我正在将我的生活游戏移植到C,无法让FileIO正常工作。输入文件的格式为:

Game 1: Pattern Name
10 20
// Pattern here
Game 2: Pattern Name
15 25
// Pattern here
依此类推,直到文件结束。我要做的是打印游戏,并为第一个游戏创建一个大小为
10
20
的多维数组,然后将图案存储在此数组中。以下是我目前掌握的情况:

void fileIO() {
    FILE *file;
    char buffer[BUFFER_SIZE];
    int rows = 0, cols = 0;

    file = fopen("input.txt", "r");

    if(file == NULL) {
            printf("Error opening file.");
    } else {
            while(fgets(buffer, BUFFER_SIZE, file) != NULL) {
                    if(strstr(buffer, "Game") != NULL) {
                            printf("%s", buffer);
                    } else {
                            sscanf(buffer, "%d%d", &rows, &cols);
                    }
            }
            fclose(file);
    }
}
这是我碰壁的地方,遇到了一系列问题

创建动态全局多维数组

防止缓冲区读取到下一个游戏中

我认为最好的方法是为每个游戏创建一个结构数组,比如

struct game {
    char board[][];
};

struct game games[];

但是,我不知道如何动态设置每个行和列中的行数和列数的参数。

我是一个相对较新的C程序员,但我认为我可能能够帮助处理动态数组。C在编译时初始化数组,如果需要动态设置数组,则编译时不起作用。因此,不要使用如下符号:

char board[][];
您需要使用指针,并根据所需的数组大小为它们分配内存。这是使用malloc函数完成的。例如:

#include<stdlib.h>

int i;
char **board;
board = malloc(rows * sizeof board[0]);

for(i = 0; i<rows; i++){
board[i] = malloc(columns * sizeof board[0][0]);
#包括
int i;
炭板;
board=malloc(行数*board[0]);
对于(i=0;i