#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* Estructura */
typedef struct
{
char titulo[120], // Titulo de la obra.
autor1[60], // Nombre de los
autor2[60], // autores
autor3[60]; // de los libros
unsigned char disp; // Bandera que indica si está disponible o no.
unsigned int id; // Código único que identifica cada libro.
} unLibro;
int main(int argc, char *argv[])
{
FILE * books;
FILE * filtro;
int file_size, i;
unLibro bk;
char search[120];
books = fopen("libros.dat", "rb");
filtro = fopen("filtro.txt", "wt");
if(!books)
{
printf("Error en la ejecución, codigo 01. Error al leer el archivo ''libros.dat''\n");
fclose(books);
fclose(filtro);
system("PAUSE");
return -1;
}
fseek(books, 0, SEEK_END);
file_size = ftell(books)/sizeof(unLibro);
fseek(books, 0, SEEK_SET);
printf("Ingrese el nombre o parte del titutlo de la obra a buscar: ");
scanf("%s", search);
fprintf(filtro, "Resultados de la busqueda: %s\n\n", search);
printf("Resultados de la busqueda: %s\n\n", search);
for(i = 0; i < file_size; i++)
{
fread(&bk, sizeof(unLibro), 1, books);
if(strstr(bk.titulo, search))
{
fprintf(filtro, "[%d] %s: %s, %s, %s. [%s]\n", bk.id, bk.titulo, bk.autor1, bk.autor2, bk.autor3, bk.disp?"Disponible":"No disponible");
printf("[%d] %s: %s, %s, %s. [%s]\n", bk.id, bk.titulo, bk.autor1, bk.autor2, bk.autor3, bk.disp?"Disponible":"No disponible");
}
}
fclose(books);
fclose(filtro);
system("PAUSE");
return 0;
}
Comments