文档详情

《C语言课程设计》实验报告-RLE压缩解压算法.pdf

发布:2025-01-02约7.33千字共5页下载文档
文本预览下载声明

饭疏食,饮水,曲肱而枕之,乐亦在其中矣。不义而富且贵,于我如浮云。——《论语》

《C语言课程设计》实验报告

一、问题描述

题目4:RLE压缩解压算法

涉及知识点:文件读写、位操作、内存管理、结构体定义、RLE算法、命令

行参数

要求:编写一个程序,可以在命令行输入参数,完成指定文件的压缩解压

命令行参数如下

rlefile1–c(-d)file2

第一个参数为可执行程序名称,第二个参数为原始文件名,第三个参数为压

缩或解压缩选项,第四个参数为新文件名

说明:

通过该练习,学生需要掌握:

(1)文件操作

(2)位操作

(3)RLE算法(相关算法可以查阅资料,我们这里要求数据都是1个字节

作为单位长度的)

二、技术关键点分析

1.读取原始文件

FILE*f1;

FILE*f2;

f1=fopen(argv[1],);

if(f1==NULL){

printf(找不到这文件);

return0;

}

intt=0;

inta=0;

//读取文件

while((a=fgetc(f1))!=EOF){

file_src[t++]=a;

}

f2=fopen(argv[3],);

intsize=t;

printf(输入字符数,size);

2.选择解码还是编码

if(strcmp(argv[2],)==0){

size=RLEdecode(file_src,size,file_dst,MAX_CHAR);

printf(输出字符数,size);

}elseif(strcmp(argv[2],)==0){

size=RLEencode(file_src,size,file_dst,MAX_CHAR);

饭疏食,饮水,曲肱而枕之,乐亦在其中矣。不义而富且贵,于我如浮云。——《论语》

printf(输出字符数,size);

}

3(1)解码

//RLE解码算法,正好是编码算法的反过程

intRLEdecode(unsignedchar*src,intsrc_len,unsignedchar*

dst,intdst_len)

{

unsignedchar*data=src;

intleft=src_len;

intpoint=0;//输出缓冲区指针

while(d

显示全部
相似文档