Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   функция gzread() проблема <zlib.h> C++ (https://forum.antichat.xyz/showthread.php?t=198436)

awdrg 22.04.2010 23:36

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

Проблема: при распаковке текстового gz файла функция верно выводит количество распакованых байт, но затем крашится по непонятной причине, не окончив работу.


       
Код:

       
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? Этот способ требует запись в файл на жестком диске, что не совсем выгодно.


awdrg 25.04.2010 00:55

вопрос решил, но появился новый:
как получить доступ к входному/выходному буферу функции Inflate? В структуре z_stream ничего похожего не нашел.


Время: 21:49