我有点坚持在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;
}