Реализация сжатия и распаковки RLE в C90 - PullRequest
0 голосов
/ 31 мая 2018

Я застрял при реализации различных условий в операторе if, чтобы распечатать правильный вывод для сжатия RLE.

Он наполовину работает, но выдает неправильную структуру.

Это символы во входном файле "AAAAAA333333FFFFF22222", но затем это сжатый вывод: "2536A6F5", вывод должен быть "6A635F52".

Майкто-нибудь подскажет, что мне нужно добавить в мое if утверждение, чтобы оно правильно его выводило?

Также кто-нибудь может дать мне подсказку о реализации декомпрессии (декодирования) RLE?

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main (void)
{
    int count[256] = { 0 };
    int n;
    int p;
    FILE * fp;
    FILE * fptr;
    fp = fopen("test.txt", "r");
    fptr = fopen("compressed_test.txt", "w");

    if (fp == NULL)
    {
        printf("Error file doesn't exist\n");
        printf("Nothing to compress\n");
        exit(0);

    }   

    while((n=fgetc(fp)))
    {
        if(n == EOF)
        {
            break;
        }   
        else
        count[n]+=1;
    }

    for (p=0; p < 256; p++)
    {
        if (count[p] > 0)
        {
            fprintf(fptr, "%c%d", p, count[p]);
            printf("Compression completed successfully\n");
        }
    }

    fclose(fp);
    fclose(fptr);
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...