PlayMa256 Posted October 4, 2013 at 01:45 PM Report #527632 Posted October 4, 2013 at 01:45 PM 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?
HappyHippyHippo Posted October 4, 2013 at 01:59 PM Report #527635 Posted October 4, 2013 at 01:59 PM que variável é esta : ClienteArquivo ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
PlayMa256 Posted October 5, 2013 at 08:02 PM Author Report #527747 Posted October 5, 2013 at 08:02 PM ClienteArquivo é uma struct do tipo cliente_auxiliar onde irá receber todos os dados providos pelo arquivo.
HappyHippyHippo Posted October 5, 2013 at 10:42 PM Report #527757 Posted October 5, 2013 at 10:42 PM que variável é esta : ClienteArquivo ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
PlayMa256 Posted October 6, 2013 at 03:46 AM Author Report #527774 Posted October 6, 2013 at 03:46 AM Não sei o porque da pergunta mas, continuo a dizer, não é uma variavel, é a struct...
HappyHippyHippo Posted October 6, 2013 at 09:09 AM Report #527777 Posted October 6, 2013 at 09:09 AM 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 Portugol Plus
Flinger Posted October 7, 2013 at 09:51 AM Report #527849 Posted October 7, 2013 at 09:51 AM (edited) 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 October 7, 2013 at 09:52 AM by Flinger
Rui Carlos Posted October 9, 2013 at 08:07 PM Report #528247 Posted October 9, 2013 at 08:07 PM 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]. Rui Carlos Gonçalves
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now