Я изучаю 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, но это выглядит грязно, и я бросил его после прочтения о get.