C 生活游戏,FileIO存储板
在过去的4个小时左右,我一直在做这个,不知道该怎么办。我正在将我的生活游戏移植到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
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