• 0
Sign in to follow this  
Leonardo Barruja

Ajuda Exercicio Struct em C

Question

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 

Edited by Leonardo Barruja

Share this post


Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 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, ;)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this