Ir para conteúdo
Fórum Script Brasil

4ng3lo

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Sobre 4ng3lo

4ng3lo's Achievements

0

Reputação

  1. Boa noite a todos. Escrevi um programa em linguagem C, que não está rodando corretamente. Consigo gravar usando a opção 1 , mas quando tento buscar o produto usando a opção 2 imediatamente recebo e mensagem de erro: falha de segmentação. Já li e reli inúmeras vezes mas não consegui corrigir meu código. Alguém sabe onde está o erro? Desde já grato pela atenção. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> typedef struct{ char nome[40]; int peso; float preço; }Produto; void limparBuffer(void){ char ch; while((ch = getchar()) != '\n' && ch != EOF){ } } Produto* getProdutos(void){ Produto* produtos; int qtd_Produtos; system("clear"); printf("Informe quantos produtos deseja cadastrar: "); scanf("%d", &qtd_Produtos); limparBuffer(); produtos = malloc(sizeof(Produto) * qtd_Produtos); for(int cont = 0; cont < qtd_Produtos; cont++){ system("clear"); printf("Nome do produto: "); fgets((produtos + cont)->nome, 40, stdin); printf("Peso Produto: "); scanf("%d", &(produtos + cont)->peso); printf("Valor Produto: "); scanf("%f", &(produtos + cont)->preço); limparBuffer(); } system("clear"); return produtos; } int buscarProduto(Produto* produtos, const char* nome_Produto){ int encontrado = 0; while(produtos != NULL){ if(strcmp((produtos)->nome, nome_Produto)){ }else{ encontrado = 1; break; } produtos++; } return encontrado; } Produto retornarProduto(Produto* produtos, const char *nomeProduto){ Produto produto; while(produtos != NULL){ if(buscarProduto(produtos, nomeProduto)){ produto = *(produtos); } produtos++; } return produto; } void exibirProduto(Produto* produtos){ char nome_Produto[40]; Produto produto; printf("Digite nome produto procurado: "); fgets(nome_Produto, 40, stdin); system("clear"); if(buscarProduto(produtos, nome_Produto)){ produto = retornarProduto(produtos, nome_Produto); printf("Nome Produto: %s", produto.nome); printf("Peso: %d\n", produto.peso); printf("Valor: %.2f\n", produto.preço); }else{ puts("Produto não encontrado!"); } sleep(5); } int main(int argc, char* argv[]){ Produto *produtos; int escolha = 0; do { system("clear"); printf("Menu Principal\n\n"); printf("(1) - Cadastrar Produtos\n"); printf("(2) - Buscar Produtos\n"); printf("(3) - Encerrar Programa\n\n\n"); printf("?: "); scanf("%i", &escolha); switch (escolha) { case 1: produtos = getProdutos(); break; case 2: exibirProduto(produtos); } } while (escolha != 3); system("clear"); puts("Programa Encerrado!"); sleep(4); return 0; }
  2. 4ng3lo

    Pulando Scanf

    Boa tarde , otavio.oivato. Faça uma pesquisa no google; procure por "limpeza do buffer de entrada(teclado)".
×
×
  • Criar Novo...