#include #include #include 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"); } }