czy chodzi o kodowanie znakow?

0

hej! napisalam sobie programik kodowania plikow tekstowych z wykorzystanie kodu huffmana i dziala :) ale nie zawsze :( Nie umie kompresowac i dekompresowac plikow txt systemu windows czyli takich ktore zawieraja cos oprocz liter typu jakis kwadracik or something else. Nie wiem czy jest to zwiazane z kodowanie znakow, czy po prostu cos jest nie tak w kodzie programu. </cpp>

0

Chodzi o to, ze pod unixem satndardowo eol (end of line) to tylko jeden znak 0x0A, a pod dosem są dwa: 0x0A i 0x0D. najlepiej to chyba jednak bedzie zrezygnowac z czytania pliku jako tekstowy i potraktowac go jako binarny.

0

Sprobuj otwierac plik jako binarny (zamiast jako tekstowy),
np: plik=fopen(sciezka,"rb");

Napisalem kilka programow do szyfrowania plikow (m.in. DES) i otwierajac plik jako binarny moge szyfrowac i deszyfrowac kazdy plik (mp3, pdf, jpg, txt, doc, itp.).

Pozdrawiam.

0

Ponadto pamiętaj, aby pobrać długość pliku przed funkcje np. fseek a nie badając długość wczytanego ciągu np. strlen bo jeśli w pliku wystąpią znaki \0 a w binarnym to prawie pewnik, to otrzymasz błędną długość.

0

Dlugosc pliku mozna takze badac w taki sposob:
long int ilosc;
int i;
while(1)
{
i=fgetc(plik_odczyt);
if(i==EOF) break;
++ilosc;
}

Tyle tylko, ze nie we wszystkich algorytmach jest to potrzebne. Ale jak wspomniano juz w tym temacie o tym, to podpowiedzialem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1