Как использовать раздвижное окно - PullRequest
0 голосов
/ 10 апреля 2019

Я делаю алгоритм сжатия LZ77, и я не могу понять, как реализовать скользящее окно и как записать информацию в буфер, а затем сдвинуть его. У меня есть код

int encode(const char *infile_path, const char *outfile_path, unsigned sb_size, unsigned la_size)
{
    FILE *infile = NULL, *outfile = NULL;
    if (bread_file(&infile, infile_path) || bwrite_file(&outfile, outfile_path)) {
        return -1;
    }

    size_t win_size = sb_size + la_size;
    char *window = malloc(sizeof * window * win_size);
    if (window == NULL) {
        fprintf(stderr, "%s() error: Memory allocation failure!\n", __func__);
        return -1;
    }

    size_t buf_size;
    buf_size = fread(window + sb_size, sizeof(char), win_size - sb_size, infile);
    if (feof(infile)) {
        printf("EOF has been reached!\n");
    }
    else {
        fprintf(stderr, "%s() error: Couldn't read info from the file!\n\n", __func__);
        return -1;
    }
}

Я застрял здесь. Не могли бы вы посоветовать подробную информацию по этому поводу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...