1
resposta

Partilho o meu código exemplo

Partilho o meu código exemplo em imagem

#include <stdio.h>
#include <stdlib.h>

char** mapa;
int linhas = 0, colunas = 0;


void loadMap();
void printMap();
void freeMap();



int main() {
    // Loap Map
    loadMap();
    // Print Map
    printMap();
    // Realse memory
    freeMap();

    return 0;
}

void loadMap() {
    FILE * f;
    f = fopen("mapa.txt","r");
    if(f == 0) {
        printf("Erro na leitura do mapa\n");
        exit(1);
    }
    fscanf(f,"%d %d", &linhas, &colunas);
    printf("Linhas: %d, Colunas: %d;\n", linhas, colunas);

    // Allocation memory using malloc function:
    mapa = malloc(sizeof(char) * linhas);
    int i;
    for(i = 0;i<linhas; i++) {
         mapa = (char**)malloc(sizeof(char*) * linhas);
         //Comment: char ** mapa = (char**) malloc(sizeof(char*) *linhas); -> (type cast -  explicity)
    }


    for (int i = 0; i < linhas; i++) {
        mapa[i] = (char*)malloc(sizeof(char) * (colunas + 1));  // Allocation memory for a line
        if (mapa[i] == NULL) {
            printf("Erro na alocação de memória para linha %d\n", i);
            exit(1);
        }
        if (fscanf(f, "%s", mapa[i]) != 1) {
            printf("Erro na leitura da linha %d\n", i);
            exit(1);
        }
    }
    fclose(f);
}


void printMap() {
    int i;
    for(i = 0; i < linhas; i++) {
        printf("%s\n",mapa[i]);
    }
}


void freeMap() {
    int i;
    for(i = 0; i < linhas; i++) {
        free(mapa[i]);
    }
    free(mapa);
}
1 resposta

Bom dia, Licínio! Tudo bem? Espero que sim!

Dei uma olhada no seu código e ele está bem organizado e condizente com o que foi passado pelo instrutor, e isso mostra o quão comprometido você está com o curso.

Caso surjam quaisquer dúvidas eu estarei à sua disposição.

Abraços e bons estudos!