gpt4 book ai didi

康威的生命游戏 FileIO

转载 作者:行者123 更新时间:2023-11-30 19:21:39 24 4
gpt4 key购买 nike

我正在学习 C,并决定从 Java 移植我的 Game of Life 代码。除了FileIO部分之外,看起来并不太难。我的输入文件如下所示:

Beehive
5 6

------
--XX--
-X--X-
--XX--
------

这是我在 Java 中所做的伪代码;

Scanner to open the file,
String line = file.nextLine(),
print the line,
get the second line
Trim and split the firstLine,
String[tokens[0]][tokens[1]],

while(line != NULL) -> string[row][col] = input.charAt(i);
close input,
return string[][]

这就是我到目前为止在 C 语言中所拥有的,

void fileIO() {
FILE *file;
char buffer[BUFFER_SIZE];

file = fopen("INPUT_FILE", "r");

if(file == NULL) {
printf("Cannot open file!");
}

while(fgets(buffer, BUFFER_SIZE, file) != NULL ) {

}
}

我不知道如何从这里继续?谁能告诉我从这里该走哪条路?

最佳答案

打印一行:puts

puts(buffer);

请注意,在 fgets 之后,buffer 包含换行符 \n,该字符也会被打印。我猜你想要这种行为(不确定这在 Java 中是如何工作的)。

<小时/>

修剪和分割线:sscanf

int height, width;
...
sscanf(buffer, "%d%d", &height, &width);
<小时/>

从字符串中提取字符(而不是input.charAt(i)):

char c = buffer[i];

这不是文件 I/O;这只是从字符串中获取字符的 C 语法。

<小时/>

Java 中似乎有一个函数返回一个动态分配的二维数组(字符?字符串?)。 Java支持在数组对象本身中记录宽度和高度,而C不支持这一点。您必须使用struct而不是二维数组:

struct MyDataFromFile
{
int height, width;
bool **data;
};

这样的数据结构只是一种可能的选择;您可以使用不同的选项:

  • bool[MAX_HEIGHT][MAX_WIDTH] - 如果存在最大高度和宽度,则方便
  • uint64_t *data 如果您想使用 1 位而不是 1 个字节进行存储 - 这需要额外的位调整

关于康威的生命游戏 FileIO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19470677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com