Witam.
Mógł bym mi ktoś pomóc i zmienić kod dla kompresji i dekompresji RLE tak by wyszedł Byterun ? Bardzo mi na tym zależy bo na dniach musze oddać projekt.
Tutaj zamieszczam kompresje i dekompresje RLE.

void kompresja_RLE(FILE *wejsciowy, FILE *wyjsciowy)
{
    char x, y, z;                                                // zmienne służace do porownywania wartosci
    unsigned char zliczanie = 0;								 // zmienna zliczajaca powtarzajacy sie kolor
    bool plik;													 // zmienna pomocnicza sprawdzajaca czy sie plik nie skonczyl

    plik = fread(&x, sizeof(char), 1, wejsciowy);
    y = x + 1;
    while (plik == true)
    {
        if (y != x)
        {
            if (zliczanie == 0)
            {
                fwrite(&x, sizeof(char), 1, wyjsciowy);           // wrzucenie do pliku wyjściowego różnych znaków leżących koło siebie
            }
            else
            {
                zliczanie--;                                      // gdy skonczyla sie sekwecja powtarzających sie znaków
                fwrite(&y, sizeof(char), 1, wyjsciowy);
                fwrite(&zliczanie, sizeof(char), 1, wyjsciowy);
                fwrite(&x, sizeof(char), 1, wyjsciowy);
                zliczanie = 0;
            }
        }
        else
        {
            if (zliczanie == 255)                                  // liczbę powtarzających sie znaków zapisujemy na jednym bajcie
            {
                // wypisujemy sekwecje jezeli ma ona maksymalna dlugosc
                fwrite(&y, sizeof(char), 1, wyjsciowy);
                fwrite(&zliczanie, sizeof(char), 1, wyjsciowy);
                zliczanie = 0;
                plik = fread(&x, sizeof(char), 1, wejsciowy);
                y = x + 1;
                continue;
            }
            else
            {
                zliczanie++;                                        // zliczanie powtarzajacych sie znakow
            }
        }
        plik = fread(&z, sizeof(char), 1, wejsciowy);               // odczytanie kolejnego znaku z pliku wejsciowego
        if (plik == true)
        {
            y = x;
            x = z;
        }
    }
    if (y == x)                                                     // jezeli plik konczy sie sekwecja wypisujemy ja
    {
        zliczanie--;
        fwrite(&y, sizeof(char), 1, wyjsciowy);
        fwrite(&zliczanie, sizeof(char), 1, wyjsciowy);
    }
}

void dekompresja_RLE(FILE *wejsciowy, FILE *wyjsciowy)
{
    char x, y;                                                       // zmienne służace do porownywania wartosci
    unsigned char zliczanie = 0;                                     // zmienna zliczajaca powtarzajacy sie kolor
    bool  plik;                                                      // zmienna pomocnicza sprawdzajaca czy sie plik nie skonczyl

    plik = fread(&x, sizeof(char), 1, wejsciowy);
    y = x + 1;
    while (plik == true)
    {
        if (y != x)
        {
            fwrite(&x, sizeof(char), 1, wyjsciowy);                  // wrzucenie do pliku wyjściowego różnych znaków leżących koło siebie
            y = x;

            plik = fread(&x, sizeof(char), 1, wejsciowy);            // odczytujemy kolejny znak
        }
        else
        {
            // gdy znaki obok siebie sa rowne
            plik = fread(&zliczanie, sizeof(char), 1, wejsciowy);    // odczytanie dlugosci sekwecji i wrzucenie jej do pliku
            for (int i = 0; i <= zliczanie; i++)
            {
                fwrite(&x, sizeof(char), 1, wyjsciowy);
            }
            plik = fread(&x, sizeof(char), 1, wejsciowy);            // odczytywanie kolejnego znaku
            y = x + 1;
        }
    }
}