114 lines
2.3 KiB
Plaintext
114 lines
2.3 KiB
Plaintext
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <stdint.h>
|
|
#include <string.h>
|
|
|
|
|
|
// global array for maze
|
|
char **maze;
|
|
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
FILE* mazeFile; /* Maze Input File */
|
|
char chold = NULL; /* 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, "%3d %3d", &row, &col);
|
|
// dynamic allocation of array for maze
|
|
int i = 0, j = 0;
|
|
maze = malloc(row * sizeof(unsigned int *));
|
|
for(i = 0; i < row; i++)
|
|
{
|
|
if (maze==NULL)
|
|
{
|
|
break;
|
|
}
|
|
maze[i] = malloc(col * sizeof(unsigned int *));
|
|
}
|
|
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, "%3d %3d", &k, &l);
|
|
maze[k][l] = 'P';
|
|
break;
|
|
|
|
case 'Z':
|
|
fscanf(mazeFile, "%3d %3d", &k, &l);
|
|
maze[k][l] = 'Z';
|
|
break;
|
|
|
|
case 'T':
|
|
fscanf(mazeFile, "%3d %3d", &k, &l);
|
|
maze[k][l] = 'T';
|
|
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++)
|
|
{
|
|
if (maze==NULL)
|
|
{
|
|
break;
|
|
}
|
|
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;
|
|
}
|