Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Duvida em CIII - Aula 1 atividade 4

Estou acompanhando a aula, escrevendo o código junto com o vídeo, mas dá o seguinte erro: [Error] invalid conversion from 'void' to 'int' [-fpermissive] O que pode estar errado?

#include <stdio.h>
#include<stdlib.h>

    char mapa[5][10+1]; // Toda string termina com /0 no final, por isso o +1
    int linhas;
    int colunas;
int main(){



    FILE* f;
    f = fopen("mapa.txt", "r");
    if(f == 0){

        printf("Erro na abertura do arquivo mapa.txt\n");
        exit(1);

    }

    fscanf(f, "%d %d", &linhas, &colunas);
    printf("linhas %d, colunas %d\n", linhas, colunas);

    ////////////////

    int* v = malloc(4); // o erro é acusado aqui!
    *v =10;
    printf("Inteiro alocado %d\n", *v);
    free(v);

    ////////////////

    for(int i =0; i<5;i++){

    fscanf(f,"%s", mapa[i]); //vai ler cada linha da matriz

    }

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



    fclose(f);


}
2 respostas
solução!

Olá Vinicius,

o código que você me mostrou é perfeitamente válido em C, e compila e executa se você tentar fazer sem flags.

O problema é que você está usando uma flag de compilação que não deixa você implicitamente mudar o tipo de suas variáveis, e outra que transforma todo warning em Error.

Tente essas duas soluções:

int *v = malloc(1 * sizeof(int))

ou

int *v = (int*) malloc(4)

Elas devem funcionar por que você está dizendo explicitamente o tipo que está alocando memória.

Se nenhuma delas funcionar, pode valer a pena avaliar se a flag "-fpermissive" está te ajudando ou atrapalhando.

Abraços, Victor.

Obrigado, Vitor! Depois descobri que estava dando erro porque estava salvo em .cpp e nao em .c.