2
respostas

[Bug] Não está lendo a linha e coluna corretamente

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

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:

Imagem que mostra a execução do código no terminal, onde é retornado o valor 5 e 10 referente a linha e coluna respectivamente

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.
#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?