gpt4 book ai didi

c - 使用 fgetc 将数据加载到二维数组中?

转载 作者:太空宇宙 更新时间:2023-11-04 01:51:17 25 4
gpt4 key购买 nike

我正在尝试读取 C 中的文件并将字符存储在二维字符数组中。我的 ROWSCOL 是 10,据我所知,我的循环应该为每一列和每一行执行 10 次。所以我认为不应该有任何未初始化的单元格。我也搜索过类似的问题,他们都在谈论数组的初始化,因为程序有时会遗漏包含垃圾的空单元格,但就我而言,它不应该有那个问题,不是吗?

我的代码是这样的:

for (row = 0; row < ROWS; row++) {
for (col = 0; col < COL; col++) {
int chtr = fgetc(fp);
if (chtr != '\n') {
grid[row][col] = chtr;
}
}
}

左边一个 是我的输出,但它包含随机字符,但是,我的预期输出 应该像右边那个:

My output Output expected

是什么导致了这种行为?

最佳答案

问题是你没有跳过换行符,相反,如果你遇到换行符,你没有更新 map 中的那个位置(它包含旧垃圾)。如果您有一个更复杂的 map ,您还会注意到每一行都开始得更远,即如果您的 map 是

@BCDEFGHIJK
ABCDEFGHIJK
ABCDEFGHIJK
ABCDEFGHIJK
ABCDEFGHIJK
ABCDEFGHIJK
ABCDEFGHIJK
ABCDEFGHIJK
ABCDEFGHIJK
ABCDEFGHIJK

你会看到:

@BCDEFGHIJK
)ABCDEFGHIJ
K#ABCDEFGHI
JK.ABCDEFGH

等等。

您可以改为循环直到 fgetc 返回非换行符:

int chtr;

while ((chtr = fgetc(fp)) == '\n') { }

// some extra error handling wouldn't hurt
if (chtr == EOF) {
printf("Corrupted map file!\n");
exit(2);
}

grid[row][col] = chtr;

关于c - 使用 fgetc 将数据加载到二维数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42461291/

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