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>
#include <string.h>
#define N 5
typedef struct {
char title[31];
char author[16];
int year;
} Book;
char title[31];
char author[16];
int year;
} Book;
int main() {
Book books[N];
char searchTitle[31];
int i, found = 0;
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");
}
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;
}