Olá Pedro, tudo bem?
Executei seu código e a aparição de números desconhecidos ocorre quando não definimos no arquivo mapa.txt
as dimensões de linha e coluna. Este arquivo deve conter dois inteiros separados por espaço, representando o número de linhas e colunas da matriz.
Exemplo de como deverá ficar o arquivo mapa.txt
:
5 10
|--------|
|...|..-.|
|..-|.@..|
|......-.|
|--------|
Dessa forma, ao executar o código deveremos ter na tela as dimensões da matriz, conforme mostro abaixo:
Espero ter ajudado e bons estudos!
#include <iostream>
#include <stdlib.h>
using namespace std;
char** mapa;
int linhas, colunas;
int main()
{
setlocale(LC_ALL,""); // Ativa o uso de acentos
// -------------------------------
int i;
FILE *f;
f = fopen("mapa.txt" , "r");
fscanf(f, "%d %d", &linhas, &colunas);
//cout << linhas << " - " << colunas << "\n";
if(f == 0)
{
printf("Erro na leitura do mapa");
exit(1);
}
for(int i = 0; i < 7; i++)
{
fscanf(f, "%s", mapa[i]);
}
for(int i = 0; i < 7; i++)
{
printf("%s\n", mapa[i]);
}
////////////
mapa = malloc(sizeof(char*) * linhas);
for(i = 0; i < linhas; i++)
{
mapa[i] = malloc(sizeof(char) * (colunas + 1));
}
////////////
fclose(f);
for(i = 0; i < linhas;i++)
{
free(mapa[i]);
}
free(mapa);
// -------------------------------
system("pause");
return 0;
}
Eu fiz algumas alterações e ele ficou assim, está correto?