Ir ao conteúdo
  • Cadastre-se

Encontrar erro - Arquivo e alocação dinâmica


Posts recomendados

Estou começando a escrever um código, porém está dando um erro e não consigo resolver. 

 

A intenção é ler de um arquivo dados de uma imagem PPM e armazenar numa matriz, usando alocação dinâmica.

 

o compilador está informando esse erro: 

 

23 2 [Error] conversion to non-scalar type requested

essa linha: ppm1.pixel = (pixelPPM)malloc( (ppm1.largura) * (ppm1.altura) * sizeof(pixelPPM));

 

 

 

************arquivo structs.h:

 

#include<stdio.h>

 

#define MAX_FORMACT 126
 
typedef struct{
int R;
int G;
int B;
}pixelPPM;
 
typedef struct{
char formato[MAX_FORMACT];
int largura;
int altura;
int maxCores;
pixelPPM **pixel;
} PPM;
 
PPM leituraPPM(FILE *fPPM);
 
 
********arquivo .c
 

#include<stdio.h>
#include<stdlib.h>
//#include"structs.h"
 
 
PPM leituraPPM(FILE *fPPM){
 
int i=0, j=0, max=0;
PPM ppm1;
 
//pegando o formato do arquivo e verificando se e um PPM
fscanf(fPPM, "%s", ppm1.formato);
if(ppm1.formato!="P2"){
      printf("Arquivo nao e um PGM.\n");
      return ppm1;
}
 
//pegando as dimenções e max de cores da imagem
fscanf(fPPM, "%d %d %d", &ppm1.largura, &ppm1.altura, &ppm1.maxCores);
 
//fazendo alocação de memoria para matriz de pixels
ppm1.pixel = (pixelPPM)malloc( (ppm1.largura) * (ppm1.altura) * sizeof(pixelPPM));
 
//preenchendo matriz de pixels
for(j=0;j<ppm1.altura; j++){
      for(i=0;i<ppm1.largura;i++){
 
       fscanf(fPPM, "%d", ppm1.pixel[j]->R);
       fscanf(fPPM, "%d", ppm1.pixel[j]->G);
       fscanf(fPPM, "%d", ppm1.pixel[j]-> B);
 
       }
}
 
return ppm1;
 
}
 
Link para o comentário
Compartilhar em outros sites

Mauro, você quer dizer na função sizeof()? ex: (pixelPPM)malloc( (ppm1.largura) * (ppm1.altura) * sizeof(*pixelPPM))?

 

ou (*pixelPPM)malloc( (ppm1.largura) * (ppm1.altura) * sizeof(pixelPPM)); (na vdd creio q seria (**pixelPPM) pois é uma matriz)

Porque no primeiro caso o compilador apresenta o erro: 
25 69: [Error] expected expression before 'pixelPPM'
E se for o segundo caso (o que creio que não) pixelPPM já é um ponterio de ponteiro na estrutura PPM

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...