c - C90中的RLE压缩和解压实现
问题描述
我有点坚持执行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;
}
解决方案
推荐阅读
- javascript - 如何按 d3.js 中的每个第 n 个孩子过滤数组数组?
- python - 在redis的Payload里面搜索
- pandas - 在 Pandas 中使用带有日期时间索引的 .loc 的 KeyError
- android - android kotlin retrofit2 com.google.gson.JsonSyntaxException 预期的字符串,但为 BEGIN_OBJECT
- html - Three.js网站上传到服务器时抛出403错误
- powershell - 将命令脚本转换为 powershell
- fast-ui - 表单验证不适用于快速基础的 TextField
- css - 宽度
在反应引导 5 - php - PHP Curl PUT 在 curl_exec 处停止
- swiftui - 在文本列表之间添加空格不起作用?