#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void mapopen();
int main() {
mapopen();
}
void mapopen() {
FILE *mapfile = fopen("map", "r");
char charbuffer[3], row, col, ROWS, COLS, i, j;
/* Count number of rows and columns in map */
row = 0, col = 0;
while (fgets(charbuffer, 3, mapfile)) {
if (*charbuffer != '\n') {col++;}
else {row++; COLS = col; col = 0;}
}
ROWS = row;
printf("%d rows %d cols", ROWS, COLS);
/* Create map */
char ***map = malloc(ROWS * sizeof(char**));
for (i = 0; i < ROWS; i++) {
map[i] = malloc(COLS * sizeof(char*));
for (j = 0; j < COLS; j++) {map[i][j] = malloc(3 * sizeof(char));}
}
/* Read file into array */
row = 0, col = 0;
while (fgets(charbuffer, 3, mapfile)) {
if (*charbuffer != '\n') {map[row][col] = strdup(charbuffer); col++;}
else {row++; col = 0;}
}
fclose(mapfile);
/* Print array */
for (row = 0; row < ROWS; row++) {
for (col = 0; col < COLS; col++) {
printf("%s", map[row][col]);
}
printf("\n");
}
}