- Para hacer la tarea más sencilla, se podrían asumir algunas limitaciones:
- El número máximo de lineas es 9 (no lo dice en ninguna parte, pero simplifica la tarea)
- No leemos de stdin, solo trabajamos con parámetros de entrada
- No hacemos todas las validaciones requeridas.. si el mapa es incorrecto el programa va a petar
- Dentro de main, hacer el código que por cada argumento recibido llame a una función a la que pasamos el argumento. (ejemplo para tratar argumentos):
#include <stdio.h>
int main(int argc, char **argv)
{
int i = 1;
while (i < argc)
{
char *fileInput;
fileInput = argv[i];
handleMap(fileInput);
i++;
}
}
- El prototipo de la función podría ser algo así:
void handleMap(char* filePath);
- La función handleMap tiene que:
- Llamar a una función que me devuelve la altura del mapa (nº lineas)
int getMapHeight(char* filePath);
1.1 Abrir el fichero que recibe como parámetro (open)
1.2 Leer la primera línea, y de esa línea extraer el número de lineas
1.3 Cerrar el fichero
1.4 Devolver el nº de lineas
- Llamar a una función que me devuelve el número de columnas
int getMapWidth(char* filePath);
2.1 Abrir el fichero que recibe como parámetro
2.2 Leer la segunda línea y contar el número de caracters
2.3 Cerrar el fichero
2.4 Devolver la anchura del mapa
- Reservar memoria para un array bidimensional de caracteres de num_lines x num_cols https://www.geeksforgeeks.org/dynamically-allocate-2d-array-c/
- Volver a abrir el fichero
- Empezar a leer desde la segunda línea rellenando el array don dos bucles anidados (recorro filas, recorro columnas de cada fila)
- Cerrar el fichero, en este punto ya tenemos una representación del mapa en memoria