Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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?