Я застрял при реализации различных условий в операторе 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;
}