Abriendo ficheros guardados en archivos zip con zziplib

Hace unos días estuve buscando información acerca de cómo usar zziplib para leer ficheros comprimidos dentro de archivos zip. Entre los resultados más relevantes no había absolutamente nada que ilustrara el proceso de una forma clara y simple, así que tuve que buscar la solucion en el foro de Gamedev. Allí, afortunadamente, alguien me dio la luz para entender el proceso. Por si acaso, lo pongo aquí también:


    ZZIP_DIR * dir = zzip_dir_open("test.zip", 0);

    char* data;
    // Open the archive root directory.
    if (dir)
    {
        ZZIP_DIRENT dirent;
        // Loop through the files in the archive.
        while(zzip_dir_read(dir, &dirent))
        {
            std::cout <        ZZIP_FILE* fp = zzip_file_open(dir, dirent.d_name, 0);
        if (fp)
        {
        // File opened, allocate memory for it and read it into data.
        data = (char*) malloc(dirent.st_size);
        zzip_ssize_t len = zzip_file_read(fp, data, dirent.st_size);
        zzip_file_close(fp);
        /* do things with data ... */
        std::cout << data<        free(data);
   }
   else
   {
        zzip_dir_close(dir);
        return 1;
   }
  }
  zzip_dir_close(dir);
}
else
{
  //something went wrong
}

Comentarios