Jump to content
PlayMa256

[Erro]request for member in something not a struct

Recommended Posts

PlayMa256

Olá, estou desenvolvendo um projeto e estou com problema em relação a structs, pra quem quizer ver o codigo todo, está aqui:

http://pastebin.com/gjzRengp

Pois bem, estou criando um sistema de venda de carros, onde tenho cadastro de cliente, cadastro de veiculos e a emissao de notas fiscais mesmo.

O problema é o seguinte, como esse projeto é pra nota, é necessario fazer a utilização de alocamento dinamico com a manipulação de arquivos, ja havia feito a manipulação de arquivos mas o professor achou melhor realizar com malloc para que nao sejam necessarias inumeras consultas a arquivos o que poderia tornar o sistema lerdo, e recai em falta de escalabilidade.

Estou tendo o problema, o console diz que request for member "nome" in something not a struct, porem essas sao as structs:

typedef struct registro{
char nome[50];
char CPF[20];
int flag;
char endereco[100];
}cliente;

typedef struct registro_v{
char modelo[50];
float motor;
char placa[8];
int ano;
char cor[15];
float preco;
int flag;
}veiculos;

typedef struct compra_venda{
char status[10]; // COMPRA/VENDA
int codigo;
int flag;
char nome_cv[50];
char CPF_CV[15];
char endereco_cv[100];
char modelo_cv[50];
float motor_cv;
char placa_cv[8];
int ano_cv;
char cor_cv[15];
float preco_cv;
}nota_fiscal;
//----------------------------Codigo pra usar o malloc---------------------------------------------

typedef struct registroAuxiliar{
char nome[50];
char CPF[20];
int flag;
char endereco[100];
}cliente_Auxiliar;

typedef struct registro_v_Auxiliar{
char modelo[50];
float motor;
char placa[8];
int ano;
char cor[15];
float preco;
int flag;
}veiculos_Auxiliar;

typedef struct compra_venda_Auxiliar{
char status[10]; // COMPRA/VENDA
int codigo;
int flag;
char nome_cv[50];
char CPF_CV[15];
char endereco_cv[100];
char modelo_cv[50];
float motor_cv;
char placa_cv[8];
int ano_cv;
char cor_cv[15];
float preco_cv;
}nota_fiscal_Auxiliar;


as auxiliares sao para receber os dados dos arquivos.


cliente func[100];
veiculos funv[100];
nota_fiscal funf[100];
cliente_Auxiliar ClienteArquivo[100];
veiculos_Auxiliar VeiculosArquivo[100];
nota_fiscal_Auxiliar NotaArquivo[100];

chamando cada struct.

int *ponteiro = malloc(tamanho * sizeof(ClienteArquivo));
if(ponteiro == NULL){
printf("Nao possui memoria suficiente no sistema\n");
}else{
ClienteArquivo.nome = func.nome; //erro aqui
ClienteArquivo.CPF = func.CPF;
ClienteArquivo.endereco = func.endereco;
ClienteArquivo.flag = func.flag;
}

nesta parte do codigo persiste o erro, e infelizmente nao faço ideia de como resolver.

O que poderia ser o problema?

Share this post


Link to post
Share on other sites
PlayMa256

ClienteArquivo é uma struct do tipo cliente_auxiliar onde irá receber todos os dados providos pelo arquivo.

Share this post


Link to post
Share on other sites
PlayMa256

Não sei o porque da pergunta mas, continuo a dizer, não é uma variavel, é a struct...

Share this post


Link to post
Share on other sites
HappyHippyHippo

Não sei o porque da pergunta mas, continuo a dizer, não é uma variavel, é a struct...

exactamente

agora que já sabes que não é uma variável, responde à seguinte : se não é uma variável, onde estás a gravar a informação quando estás a fazer :

ClienteArquivo.nome     = func.nome;
ClienteArquivo.CPF      = func.CPF;
ClienteArquivo.endereco = func.endereco;
ClienteArquivo.flag     = func.flag;


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Flinger

Ainda pior do que eu pensava...

cliente_Auxiliar ClienteArquivo[100]

Declaras a variável como um array, e agora achas que não é uma variável mas sim uma struct?

Tens múltiplos erros no teu programa, mas acho que tens de voltar aos princípios e rever as definições de variável, struct, array e memória dinâmica.

Edited by Flinger

Share this post


Link to post
Share on other sites
Rui Carlos

Não sei o porque da pergunta mas, continuo a dizer, não é uma variavel, é a struct...

Possivelmente há aqui alguns problemas de terminologia, mas diria que o ClienteArquivo é efectivamente uma variável (global). O tipo da variável é qualquer coisa como cliente_Auxiliar [100] (ou cliente_Auxiliar*). O problema no código que indicaste é que estás a assumir que tens uma variável do tipo cliente_Auxiliar, quando na verdade tens uma variável do tipo cliente_Auxiliar [100].

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.