Boa noite pessoal. Fiz o código conforme o vídeo-aula, porém, aqui no compilador do DEV C++ está acusando o erro do título em 2 linhas (22 e 24).
Código Completo:
#include <stdio.h>
#include <stdlib.h>
// Global
char** mapa;
int linhas;
int colunas;
int main() {
    
    FILE* f;
    f = fopen("mapa2.txt", "r");
    if(f == 0) {
        printf("Erro na leitura do mapa.txt.\n");
        exit(1);
    }
    
    fscanf(f, "%d %d\n", &linhas, &colunas);
    printf("Linhas %d Colunas %d\n", linhas, colunas);
    
    // 'Malloc' é usado para alocar memória dinâmicamente.
    mapa = malloc(sizeof(char*) * linhas);
    for(int i = 0; i < linhas; i++) {
        mapa[i] = malloc(sizeof(char) * (colunas+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);
    
    for(int i = 0; i < linhas; i++) {
        free(mapa[i]);
    }
    
    free(mapa);
}
Meu mapa2.txt:
5 10
|--------|
|...|..-.|
|..-|.@..|
|......-.|
|--------|
Linha 22 acusando o Erro: Invalid Conversion from 'void' to 'char**' [-fpermissive]:
    mapa = malloc(sizeof(char*) * linhas);
Linha 24 acusando o Erro: Invalid Conversion from 'void' to 'char*' [-fpermissive]:
        mapa[i] = malloc(sizeof(char) * (colunas+1));	
Lendo alguns tópicos aqui do fórum, vejo que pra 'solucionar' o caso precisaria acrescentar antes dos mallocs:
mapa = (char**)malloc ...
mapa = (char*)malloc ...
Porém, o porquê disso? Não entendi o motivo. Por acaso o compilador não está encontrando algo da memória ou então, não está conseguindo gravar na memória? Ou seria outra definição?
Aguardo resposta, obrigado.
 
            