Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Vacanta Italia

Concediu Halkidiki

Ce vehicule motorizate ați avut d...

Router Asus nu se conecteaza WAN
 Gradina, copaci, arbusti si plant...

Trackpoint Thinkpad

Legare boiler electric trifazat l...

Upgrade CPU pentru Lenovo ThinkCe...
 Mouse wireless multimode (2x BT +...

Durere incheietura piciorului

Reparatie tablou electronic

Dell U2722 USB Connectors
 Transport aragaz Germania - Ro

SSD M.2 NVMe nu este recunoscut d...

De ce apare lag la telefoanele Mo...

Proiect monitorizare - comunicare...
 

Compresie ZLib char - fisier

- - - - -
  • Please log in to reply
3 replies to this topic

#1
GabyF

GabyF

    Junior Member

  • Grup: Members
  • Posts: 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.

Edited by GabyF, 28 February 2023 - 16:14.


#2
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,247
  • Înscris: 24.02.2007
std::vector


#3
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,247
  • Î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
  • Posts: 30,247
  • Înscris: 24.02.2007
Ai reusit?

Anunturi

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

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