Escrevi o seguinte código:
#include <stdio.h>
#include <stdlib.h>
int main() {
char** mapa;
int linhas;
int colunas;
FILE* f;
f=fopen("mapa.txt", "r");
if(f==0) {
printf("Erro ao abrir o arquivo de mapas.");
exit(1);
}
fscanf(f, "%d %d", &linhas, &colunas);
printf("O mapa tem %d linhas e %d colunas!\n", linhas, colunas);
mapa = malloc(sizeof(char*) * linhas);
for(int i=0; i<linhas; i++) {
mapa[i] = malloc(sizeof(char) * (11));
}
for(int i=0; i<linhas; i++) {
fscanf(f, "%s", &mapa[i]);
}
for(int i=0; i<linhas; i++) {
printf("%s\n", mapa[i]);
}
fclose(f);
for(int i=0; i<linhas; i++) {
free(mapa[i]);
}
free(mapa);
}
O código foi compilado sem nenhum problema. Mas, ao executá-lo, foi impresso somente a frase indicando o número de linhas e colunas. O mapa não foi impresso. Resolvi escrever um código mais simples para testar a criação de arranjos com o "malloc":
#include <stdio.h>
#include <stdlib.h>
int main() {
int* v = malloc(sizeof(int)*4);
v[0]=10;
v[1]=11;
v[2]=12;
v[3]=13;
free(v);
printf("%d\n%d\n%d\n%d", v[0], v[1], v[2], v[3]);
}
Depois de compilar e executar, as variáveis v[0] e v[1] imprimiram números aleatórios, já as variáveis v[2] e v[3] imprimiram os números 12 e 13, respectivamente, como esperado. Gostaria de saber o que está acontecendo de errado ao declarar os valores para as variáveis v[0] e v[1], bem como solucionar o problema de não imprimir o mapa no programa do jogo. Obrigado!