Opa blz, eu estava tentando fazer o exercício, mas a mensagem Segmentation fault (core aparecia) aparecia quando eu tentava executar o programa, eu não sei porque ou como consertar.
#include <stdio.h>
#include <stdlib.h>
#include "comecome.h"
int main(){
int linhas, colunas;
char** mapa;
lemapa(mapa, linhas, colunas);
imprimemapa(mapa, linhas, colunas);
liberamapa(mapa, linhas, colunas);
return 0;
}
void lemapa(char** mapa, int linhas, int colunas){
FILE* f = fopen("mapa.txt", "r");
if(f == NULL) {
printf("erro ao tentar abrir o mapa.");
exit(1);
}
fscanf(f,"%i %i", &linhas, &colunas);
alocamapa(linhas, colunas, mapa);
for(int i = 0; i < linhas; i++){
fscanf(f,"%s", mapa[i]);
}
fclose(f);
}
void alocamapa(int linhas, int colunas,char** mapa){
mapa = malloc (sizeof(char*) * linhas);
for(int i = 0; i < linhas;i++){
mapa[i] = malloc(sizeof(char) * colunas + 1);
}
}
void imprimemapa(char** mapa,int linhas, int colunas){
for(int i = 0; i < linhas; i++){
printf("%s", mapa[i]);
}
}
void liberamapa(char** mapa, int linhas, int colunas){
for(int i = 0; i < linhas; i++){
free(mapa[i]);
}
}