функция gzread() проблема <zlib.h> C++

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by awdrg, 22 Apr 2010.

  1. awdrg

    awdrg Member

    Joined:
    30 Jan 2009
    Messages:
    195
    Likes Received:
    31
    Reputations:
    1
    функция inflate() проблема <zlib.h> C++

    fixed
    Code:
    Проблема: при распаковке текстового gz файла функция верно выводит количество распакованых байт, но затем крашится по непонятной причине, не окончив работу.
    
    [code]sasha@sasha-desktop:~$ ./gziptest
    9
    Segmentation fault
    Ubuntu 9.10
    Строка 9 байт.

    Исходник:
    #include <stdio.h>
    #include <string.h>
    #include <iostream>
    #include <zlib.h>
    using namespace std;

    main()
    {
    gzFile zfp;
    char * text = new char[256];
    text[0] = '\0';
    void * buf = &text;

    zfp = gzopen("file.gz","r");
    cout << gzread(zfp,buf,255) << endl; выводит кол-во распак. байтов файла (9)
    cout << text; //до этого момента не доживает, text должен изменяется (распаковыватся) через указатель buf строкой выше.
    gzclose(zfp);
    return 0;
    }
    Сам файл читается системой без проблем.
    И еще интересует такой вопрос: как выгоднее распаковывать ответ сервера по http? Этот способ требует запись в файл на жестком диске, что не совсем выгодно.[/CODE]
     
    #1 awdrg, 22 Apr 2010
    Last edited: 23 Apr 2010
  2. awdrg

    awdrg Member

    Joined:
    30 Jan 2009
    Messages:
    195
    Likes Received:
    31
    Reputations:
    1
    вопрос решил, но появился новый:
    как получить доступ к входному/выходному буферу функции Inflate? В структуре z_stream ничего похожего не нашел.