Salt la conținut

SUBIECTE NOI
« 1 / 5 »
RSS
Obiecte vechi și inutile car...

Mentenanta Acoperis

Cheder deteriorat , zgariat, cum ...

Laptop HP 15-AF001NQ, AMD E1-6015...
 Blat de bucatarie lungime 4,60 m

Termostat incalzire si racire

Configurare retea cu modem Vodafo...

Curtea Penala Internationala soli...
 Sunt obligate bancile sa opteze p...

Pensie anticipata partiala cu cer...

Subscriptii

Cat ar costa acest poster, se poa...
 Cum sa scapam de sobolani?

Alser Forest SA a dat teapa de 1,...

COD Eroare ABS ( Ford Mondeo MK5 )

Implanturi dentare clinici Consta...
 

Compresie ZLib char - fisier

- - - - -
  • Vă rugăm să vă autentificați pentru a răspunde
3 răspunsuri în acest subiect

#1
GabyF

GabyF

    Junior Member

  • Grup: Members
  • Mesaje: 235
  • Înscris: 27.09.2006
Am facut o functie care incarca datele existente intr-un fisier comprimat zlib intr-un char.

int uncomprCharLen(char *&output, char *infile) {
int nr_read, nr_out = 0; char buffer[512];
gzFile gzfile = gzopen(infile, "rb");
gzread(gzfile, buffer, 4);
char *tmp=new char[gzoffset(gzfile)*4];// uncompress data cannot be larger
gzseek(gzfile, 0, SEEK_SET);
while ((nr_read = gzread(gzfile, buffer, sizeof(buffer))) > 0) {
strncat(tmp, buffer, nr_read);
nr_out+=nr_read;
}
delete[] output;
output = new char[nr_out];
strncpy(output, tmp, nr_out);
delete[] tmp;
gzclose(gzfile);
return nr_out;
}
int main(int argc, char **argv) {
char *uncompr=new char[4];
uncomprCharLen(uncompr, argv[1]);
printf("uncompr %s\n", uncompr);
return 0;
}

Pare ca merge. Intrebarea mea este daca vi se pare ceva in neregula.
Zlib nu ofera posibilitatea de-a afla lungimea sirului decomprimat si nici n-as vrea sa folosesc gzread de doua ori. Asa ca am folosit un char temporar destul de mare si am redimensionat char-ul pe care o sa-l folosesc in afara functiei.

Editat de GabyF, 28 februarie 2023 - 16:14.


#2
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Mesaje: 30.268
  • Înscris: 24.02.2007
std::vector


#3
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Mesaje: 30.268
  • Înscris: 24.02.2007
Exista desigur si posibilitatea sa nici n-ai nevoie de toate caracterele deodata. De exemplu daca doar le copiez in alta parte sau faci procesari pe cate putine odata.

#4
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Mesaje: 30.268
  • Înscris: 24.02.2007
Ai reusit?

Anunturi

Bun venit pe Forumul Softpedia!

Utilizatori activi: 1

0 membri, 1 vizitatori, 0 utilizatori anonimi

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate