Faça um programa que leia um vetor com dados de 5 livros: título (máximo 30 letras), autor (máximo 15 letras) e ano. Procure um livro por título, perguntando ao usuário qual título deseja buscar. Mostre os dados de todos os livros encontrados.

Passo 1

O programa vai ler dados de 5 livros armazenando título, autor e ano em um vetor de structs e depois pesquisar por título usando comparação de strings.

Passo 2

Definimos uma struct chamada Book com campos para título (até 30 caracteres mais o terminador), autor (até 15 caracteres mais o terminador) e ano (inteiro). Declaramos um vetor books de tamanho 5 do tipo Book.

Passo 3

Fazemos um laço de 0 a 4 para ler cada livro: usamos scanf com o especificador %30[^\n] para ler o título, %15[^\n] para ler o autor e %d para ler o ano. Limpamos o buffer de entrada entre leituras de linha.

Passo 4

Após ler todos os livros, perguntamos ao usuário qual título deseja buscar e armazenamos em uma variável searchTitle usando o mesmo formato de scanf.

Passo 5

Percorremos o vetor de livros e, para cada livro, comparamos book.title e searchTitle usando strcmp. Se retornar zero, significa que os títulos coincidem e então exibimos os dados desse livro. Se nenhum livro for encontrado (contador de ocorrências permanecer zero), exibimos uma mensagem informando que não há livros com aquele título.

Resposta

#include <stdio.h>
#include <string.h>
#define N 5
typedef struct {
char title[31];
char author[16];
int year;
} Book;
int main() {
Book books[N];
char searchTitle[31];
int i, found = 0;
// Leitura dos dados dos livros
for (i = 0; i < N; i++) {
    printf("Livro %d:\n", i + 1);
    printf("Título: ");
    scanf(" %30[^
]", books[i].title);
printf(“Autor: “);
scanf(” %15[^
]”, books[i].author);
printf(“Ano: “);
scanf(”%d”, &books[i].year);
getchar(); // consome o ‘\n’ restante
printf("\n");
}
// Leitura do título a buscar
printf("Digite o título do livro para busca: ");
scanf(" %30[^
]", searchTitle);
// Busca e exibição dos livros encontrados
printf("\nResultados da busca:\n");
for (i = 0; i < N; i++) {
    if (strcmp(books[i].title, searchTitle) == 0) {
        printf("Título: %s\n", books[i].title);
        printf("Autor: %s\n", books[i].author);
        printf("Ano: %d\n\n", books[i].year);
        found++;
    }
}

if (found == 0) {
    printf("Nenhum livro encontrado com o título '%s'.\n", searchTitle);
}

return 0;
}

Exercícios relacionados