Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda Exercicio Struct em C


Leonardo Barruja

Pergunta

Boa noite, primeira vez postando aqui, pessoal estou com um problema(que já me deparei em outro programa em tinha que fazer pra faculdade) espero que consigam me ajudar a achar o erro...

O exercício pede para usar Struct para criar como se fosse um banco de dados de uma biblioteca do tipo Nome, Autor, Nº Paginas e Preço e depois imprimir eles...

Meu código:   

#include <stdio.h>
#include <string.h>
#define NMAX 5
#define STRMAX 100

struct BIBLI {
    char livro[NMAX];
    char autor[NMAX];
    int pag;
    double valor;
    
};

int main(){
    
    struct BIBLI l[NMAX];
    int i;
    
    for(i=0; i<NMAX; i++){
    
          printf("Digite o nome do livro: \n ");
          fgets(l[i].livro, STRMAX, stdin);
          strtok(l[i].livro, "\n");
    
          printf("Digite o autor do livro: \n ");
          fgets(l[i].autor, STRMAX, stdin);
         strtok(l[i].autor, "\n");
             
          printf("Quantidade de paginas: \n" );
         scanf("%i", &l[i].pag);
                     
         printf("Valor do livro: \n");
          scanf("%lf", &l[i].valor);
                  
        }
    for(i=0; i<NMAX; i++){
        
        printf("Nome do livro: %s \n", strlen(l[i].livro));
        printf("autor: %s \n", strlen(l[i].autor));
        printf("%i Paginas", l[i].pag);
        printf("Valor em reais: %lf", l[i].valor);        
        printf("-------- \n");
    }
    
}

O erro que ocorre é o seguinte:

Digite o nome do livro:
 aisdjaidsajdis
Digite o autor do livro:
 iajsdiasjdi
Quantidade de paginas:
30
Valor do livro:
49,00
Digite o nome do livro:
 Digite o autor do livro:  // ELE PULA A ENTRADA DO PRÓXIMO LIVRO 

Editado por Leonardo Barruja
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Ao fazer muitas entradas em um programa, o buffer do teclado fica "sujo" use funções que limpam esse buffer a cada captura de texto:

fflush(stdin);
setbuff(stdin, NULL);

são duas que tem essa função, abraços, boa sorte.

O tamanho das suas string's está pequeno, tente um número maior do que 5, isso também gera problemas se o nome do livro ou autor for mais que 5 letras, ;)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...