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.