C语言编写压缩解压字符串程序
一、压缩函数编写
当输入字符串时,读取第一个字符,然后往后面数相同的字符,并记录相同字符个数,直到出现一个不同的字符为止,并记录该字符以及个数;然后记录读取紧接下来不同与第一个的字符,并以此记录后面连续是同一字符的个数,知道出现另一个不同的为止;以此循环,写入新的数列。(注意数列结尾一定要有'\0')代码如下:
void Cn(char p[100], char* q)
{ int i = 0, j = 0;int flag = 1;char a = 0;while (p[i]){a = p[i];i++;while (a == p[i]){flag++;i++;}*(q + j) = a;j++;*(q + j) = 48 + flag;flag = 1;j++;}*(q + j) = '\0';
}
二、解压函数的编写
读取压缩后的字符串,奇数位为字符,偶数位位相应字符的个数,一次输入到新的数列;(注意数列结尾一定要有'\0')代码如下:
void Dn(char p[100], char* q)
{int i = 0, j = 0;char flag ;char a = 0;while (p[i]){a = p[i];i++;flag = p[i] ;i++;flag = flag - '0';while(flag--){*(q + j) = a;j++;}}*(q + j) = '\0';
}
三、代码如下:
void Cn(char p[100], char* q); //压缩
void Dn(char p[100], char* q); //解压
int main()
{char str[100];char str1[100];char str3[100];gets(str);Cn(str, str1);printf("%s\n", str1);Dn(str1,str3);printf("%s\n", str3);
}
void Cn(char p[100], char* q)
{ int i = 0, j = 0;int flag = 1;char a = 0;while (p[i]){a = p[i];i++;while (a == p[i]){flag++;i++;}*(q + j) = a;j++;*(q + j) = 48 + flag;flag = 1;j++;}*(q + j) = '\0';
}
void Dn(char p[100], char* q)
{int i = 0, j = 0;char flag ;char a = 0;while (p[i]){a = p[i];i++;flag = p[i] ;i++;flag = flag - '0';while(flag--){*(q + j) = a;j++;}}*(q + j) = '\0';
}
C语言编写压缩解压字符串程序相关推荐
- Java 压缩解压字符串(支持中文)
public static void main(String[] args) throws Exception{ String str ="xflush3.0个人感觉最大的特点就是监控配置非 ...
- python zlib_【python】使用zlib进行压缩解压
A:如何使用zlib模块来进行压缩解压了? Q: 1.使用zlib.compress可以压缩字符串.使用zlib.decompress可以解压字符串. 压缩解压字符串示范代码:import zlibm ...
- C语言哈夫曼编码压缩解压
C语言哈夫曼编码压缩解压 一.实验目的 掌握哈夫曼编码基本运算以及存储结构表示. 二.实验内容: 1.系统要求包含以下功能 1)初始化:从终端读入字符集大小n,以及n个字符和n个权值(或者读入字符集和 ...
- 字符串GZIP压缩解压
c# /// <summary>/// 字符串压缩解压/// </summary>public class Zipper{public static string Compre ...
- python3 zlib 实现压缩与解压字符串与文件数据流
关于python3 zlib 压缩解压情况总结如下: 字符串:使用zlib.compress方法压缩字符串,使用zlib.decompress方法解压字符串. 数据流:压缩:zlib.compress ...
- Java 字符串压缩/解压【开发记录】
1.场景:由于数据库字段长度有限,并且不能随意的修改数据库字段的配置,数据库的某个字段设置的长度可能在设置初期是满足需求的,后期由于业务变更或业务量增大导致该字段存储的数据增长,落库时可能因为该字段数 ...
- RLE压缩解压算法的完整实现
和第四题一样同样是各种东拼西凑的结果,希望对一部分人有帮助.要用的话请至少改一下变量名和函数顺序并且搞懂为什么,不要直接抄袭.在此感谢陈德创大佬的无私帮助以及陈万庆老师提供的音频测试文件 看之前请先搞 ...
- C#压缩解压zip 文件
我在做项目的时候需要将文件进行压缩和解压缩,于是就从http://www.icsharpcode.net下载了关于压缩和解压缩的源码,但是下载下来后,面对这么多的代码,一时不知如何下手.只好耐下心来, ...
- 为了OFFER | 腾讯2020校招后端《解压字符串》
@Author:Runsen @Date:2020/9/6 大四刷题拼offer系列,不拼不行啊.自己知道自己的数据结构算法很菜.而且2020/9/6今晚还有腾讯的笔试,祝我好运吧.自己知道成功的可能 ...
最新文章
- aehyok.com的成长之路二——技术选型
- [视频教程] 配置mysql用户的权限并查询数据
- DataTable方法 和 性能
- 如何使用SetTimer MFC 够详细
- 超级vga显示卡_VGA视频采集卡常见故障分析
- 第一部分 线程APIs(Thread APIs)线程和运行(Threads and Runnables)
- HBuilderx中编译sass文件
- eBay把平台更新为Kubernetes、Envoy和Kafka:计划开源硬件和软件
- 【Java】JavaSocket编程开发聊天室-客户端核心部分
- 带约束优化之惩罚函数法
- 详解24个经典股票技术指标(二)
- 英语听力采用计算机化考试,高考英语复习资料及听力机考特点与应对建议
- 学习python必备软件
- 最全iOS 应用上架流程(提交到AppStore)
- Linux快速安装Python3.6 - 邱乘屹的个人技术博客
- 初创软件企业如何合理避税?
- 理解promise、promise.all、promise.race
- Python 网络编程之网络协议(未完待续)
- CLI, CILCLR
- oracle aul 恢复,使用AUL-MyDUL恢复的步骤
热门文章
- beego框架-logs模块学习笔记
- Shell程序退出状态码的命令详解
- 【数据库系统】第一部分 数据库基础(4) 数据库安全性
- 一文读懂GPU服务器
- Ubuntu ISO定制
- 数论-FTT 和 NTT
- php报错:PHP Startup Unable to load dynamic library
- 英特尔第十代处理器为什么不支持win7_10代cpu能不能装win7?10代cpu装win7全面分析(支持十代cpu)...
- python股票回测源码_Python爬虫回测股票的实例讲解
- iOS开发实用技术之音频播放(QQ音乐)