#include #include #include /* 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; }