marcoshuck icon

Ejercicio 1 - Archivos y cadenas

marcoshuck | PRO | 10/31/13 03:44:46 PM UTC | 0 ⭐ | 368 👁️ | Never ⏰ | []
C |

1.67 KB

|

None

|

0 👍

/

0 👎

#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