Ir ao conteúdo
  • Cadastre-se

Jones Sabino

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Reputação

0
  1. Boa tarde! Estou criando um sistema simples de pedidos (projeto da faculdade). Na função cadastro, utilizo uma estrutura para armazenar os dados de cada item. O problema acontece a partir da segunda inserção, quando tento verificar se o código do produto já foi cadastrado, pois aparentemente a condição que defini não está sendo obedecida. Segue o código da função inteira abaixo para facilitar o entendimento, está comentada e a parte problemática em vermelho: void cadastro(){ typedef struct{ int codProd; float preco; char nomeProd[50]; }dados; FILE *arq; dados pedido, pedidoLido, pedidoArq; //Uso o pedidoArq para carregar a estrutura gravada no arquivo. int totalGravado=0; char opc; int vrf = 1; while (1){ //Openning file arq = fopen("produtos.dat", "a+b"); if(arq == NULL){ system("cls"); printf("\nErro na abertura do arquivo\n\n"); getch(); exit(1); } //Getting product code printf("\n\nDigite o código do produto: "); fflush(stdin); scanf("%i", &pedidoLido.codProd); //Armazena na estrutura pedidoLido, que mais adiante será comparada com a estrutura lida do arquivo, que armazeno em pedidoArq. while(vrf == 1){ if (pedidoLido.codProd == fread(&pedidoArq, sizeof(dados), 1, arq)){ //compara se o codprod digitado já existe no arquivo. (Não sei se essa comparação funciona) printf("O código já existe! Escolha outro :\n"); fflush(stdin); scanf("%i", &pedidoLido.codProd); fclose(arq); arq = fopen("produtos.dat", "a+b"); }else{ pedido.codProd = pedidoLido.codProd; //essa atribuição, por exemplo, não funciona pois quando leio as variáveis abaixo o valor não foi atribuído. vrf = 0; } } //Getting product name printf("\n\nDigite o nome do produto: "); fflush(stdin); gets(pedido.nomeProd); //Getting product price printf("\n\nDigite o preco do produto: "); fflush(stdin); scanf("%f", &pedido.preco); //Debug printf("\n pedido.codprod pedidoLido.codprod pedidoArq.codProd nomeprod preco \n"); printf("\n %i %i %i %s %f \n", pedido.codProd, pedidoLido.codProd, pedidoArq.codProd, pedido.nomeProd, pedido.preco); //Writing variables into a file totalGravado = fwrite(&pedido, sizeof(dados), 1, arq); if(totalGravado != 1){ //verifying errors in the recording system("cls"); printf("\nErro na gravação do arquivo\n\n"); getch(); exit(1); }else{ printf("\nDados gravados com sucesso\n\n"); getch(); } fclose(arq);//closing file system("cls"); printf("\nDeseja cadastrar outro item? s/n"); opc = getch(); if(opc == 'n' || opc == 'N'){ break; } } Desde já agradeço a ajuda! Obrigado, até mais!

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!