Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Imprimi um lixo depois do mapa

Na primeira aula, quando usamos a matrix para carregar os dados do txt e imprimir na tela, depois do mapa em si eu recebo um lixo..

|--------|
|...|..-.|
|..-|.@..|
|......-.|
|--------|
`FKv♣
#include<stdio.h>
#include<stdlib.h>

int main(){
    //matriz 5x10
    char mapa[5][10+1];

    FILE* f;
    f=fopen("mapa.txt","r");
    if(f==0){
        printf("Erro ao abrir os mapas");
        exit(1);
    }

    for(int i=0;i<=5; i++){
    fscanf(f,"%s",mapa[i]);

    }

    for(int i=0;i<=5;i++){
        printf("%s\n",mapa[i]);

    }

    fclose(f);
}

arquivo txt

|--------|
|...|..-.| 
|..-|.@..|
|......-.|
|--------|
1 resposta
solução

Olá Danilo, tudo bem ? Espero que sim.

O problema está no seus for que estão indo até o i = 5 que é uma posição invalida e por isso ele acaba imprimindo o "lixo".

Para corrigir basta retirar o = e deixar apenas o <

    for(int i=0;i<5; i++){
    fscanf(f,"%s",mapa[i]);

    }

    for(int i=0;i<5;i++){
        printf("%s\n",mapa[i]);

    }

Assim nosso i vai variar de 0 até 4, que são a 5 posições validas que temos.

Espero ter ajudado, qualquer duvida não hesite em perguntar.

Bons Estudos.

: )

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software