Cześć!
Mam taki problem, pisze sobie kompresje i dekompresje plików w C, a właściwie napisałem na Linuksie.
Jednak po kompilacji na Windows program nie działa poprawnie, a mianowicie podczas dekompresji wykrywa przedwcześnie koniec pliku (EOF), więc na przykład plik po kompresji waży kilkadziesiąt kb, a po dekompresji kilkadziesiąt bajtów.
Pętla wygląda tak:
while(fscanf(inputFile, "%c", &buffer)!=EOF)
{
while(bufferIter<8)
{
unsigned char mask = 128;
mask = mask>>bufferIter;
bufferIter++;
if(buffer&mask) tmp = tmp->right;
else tmp = tmp->left;
if(tmp->c>0)
{
fprintf(outputFile, "%c", tmp->c);
tmp = root;
}
}
bufferIter = 0;
}
To co w środku while to dekompresja, więc nie powinno mieć żadnego wpływu na działanie pętli.
O dziwo na linuksie działa bezbłędnie niezależnie od pliku :/