【发布时间】:2011-10-19 03:13:17
【问题描述】:
我正在学习 C,我决定制作一个文字游戏作为我的学习项目。所以我正在尝试这个将文本文件读入二维数组的原始“解析器”,但有一个问题:这个地图不使用 1 个字符宽的单元格,它使用 2 个字符宽的单元格。例如,玩家用** 表示,门用## 表示等等。
也就是说,我需要读取文本文件的 2 个字符,然后将其分配给地图中的相应单元格。
好吧,我制作了一个测试文件,其中包含
aabbccddee
ffgghhiijj
kkllmmnnoo
ppqqrrsstt
uuvvwwxxyy
我试着用它来阅读它
#include <stdio.h>
#define ROWS 5
#define COLS 5
int main() {
FILE *mapfile = fopen("durr", "r");
char charbuffer[3], row, col, *map[ROWS][COLS];
/* Initializing array */
for (row = 0; row < ROWS; row++) {
for (col = 0; col < COLS; col++) {
map[row][col] = " ";
}
}
/* Reading file into array */
for (row = 0; row < ROWS; row++) {
for (col = 0; col < COLS; col++) {
map[row][col] = fgets(charbuffer, 3, mapfile);
}
}
/* Printing array */
for (row = 0; row < ROWS; row++) {
for (col = 0; col < COLS; col++) {
printf("%s", map[row][col]);
}
printf("\n");
}
fclose(mapfile);
return 0;
}
但是当我执行它时,我得到了这个
uuuuuuuuuu
uuuuuuuuuu
uuuuuuuuuu
uuuuuuuuuu
uuuuuuuuuu
我认为这与 fgets 返回指针的事实有关,但我不确定。我尝试用 fgetc 来做,但它看起来很乱,我在阅读了关于 gets 后放弃了它。
【问题讨论】:
-
C 中没有字符串,只有字符数组。因此你不能分配“字符串”!相反,请使用
strncpy(),并确保您了解所涉及的内存管理。
标签: c parsing file-io multidimensional-array