#include #include #include #include // global array for maze char **maze; int main(int argc, char *argv[]) { FILE* mazeFile; /* Maze Input File */ char chold; /* Holds character for line input from file */ int row = 0; /* Holds number of rows for input from file */ int col = 0; /* Holds number of cols for input from file */ char shold[2000]; /* Holds lines for input from file */ int l = 0; int k = 0; int c1 = 0; int c2 = 0; // check to see if if (argc != 2) { printf("An error has ocurred no input file was given.\n"); return 1; } mazeFile = fopen(argv[1], "r"); if (mazeFile == NULL) { printf("Error in opening the file.\n"); return 1; } fgets(shold, 2, mazeFile); while ( !feof(mazeFile) ) { switch(shold[0]) { case 'M': fscanf(mazeFile, "%d %d", &row, &col); // possible dynamic allocation of 2D array // dynamic allocation of array for maze int i = 0, j = 0; maze = malloc(row * sizeof(char *)); for(i = 0; i < row; i++) { maze[i] = malloc(col * sizeof(char)); } for (i = 0; i < row; i++) { for (j = 0; j < col; j++) { fscanf(mazeFile, "%c", &maze[i][j]); if (maze[i][j] == '\n') { fscanf(mazeFile, "%c", &maze[i][j]); } } } break; case 'P': fscanf(mazeFile, "%d %d", &k, &l); maze[k][l] = 'P'; break; case 'Z': fscanf(mazeFile, "%d %d", &k, &l); maze[k][l] = 'Z'; printf("%c" , maze[k][l]); break; case 'T': fscanf(mazeFile, "%d %d", &k, &l); maze[k][l] = 'T'; break; case '\n': printf("\n"); break; default: break; }; fgets(shold, 2, mazeFile); if (feof(mazeFile)) { break; } } fclose(mazeFile); for (c1 =0; c1 < row; c1++) { printf ("\n"); for (c2=0; c2 < col; c2++) { printf("%c", maze[c1][c2]); } } //free the memory int i = 0; for(i = 0; i < row; i++) { free(maze[i]); } free(maze); printf("\n"); return 0; }