ASCII压缩算法实现
来源:互联网 发布:英语短语词组软件 编辑:程序博客网 时间:2024/06/05 02:23
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
//压缩函数,采用开解循环提高效率
void ASCII_Compress(char *dest,char *src)
{
dest[0]=src[0];
dest[1]=src[1];
dest[2]=src[2];
dest[3]=src[3];
dest[4]=src[4];
dest[5]=src[5];
dest[6]=src[6];
dest[0]|=((src[7]&0x40)<<1);
dest[1]|=((src[7]&0x20)<<2);
dest[2]|=((src[7]&0x10)<<3);
dest[3]|=((src[7]&0x8)<<4);
dest[4]|=((src[7]&0x4)<<5);
dest[5]|=((src[7]&0x2)<<6);
dest[6]|=((src[7]&0x1)<<7);
}
size_t ASCII_ReadStream(char* buf,FILE *stream)
{
size_t nCount=0;
nCount=fread(buf,1,8,stream);
return nCount;
}
char*ASCII_CompressName(char*OldName)
{
char*newName=(char*)malloc(strlen(OldName)+5);
strcpy(newName,OldName);
strcat(newName,".ASC");//拓展名ASC short for ASCII_Compress
return newName;
}
void ASCII_CompressWrite(FILE *ReadStream,FILE *WriteStream)
{
size_t nCount=0;
char buf[7],src[8];
while(nCount=ASCII_ReadStream(src,ReadStream))
{
if(8==nCount)
{
ASCII_Compress(buf,src);
fwrite(buf,1,7,WriteStream);
}
else
fwrite(src,1,(int)nCount,WriteStream);
}
}
int main(int argc,char* argv[])
{
FILE *FileRead,*FileWrite;
if(FileRead=fopen(argv[1],"r+"))
{
char*newName=ASCII_CompressName(argv[1]);
FileWrite=fopen(newName,"a+");
free(newName);
if(!FileWrite)
goto Main_OpenFile_Worry;
ASCII_CompressWrite(FileRead,FileWrite);
fclose(FileWrite);
Main_OpenFile_Worry:
fclose(FileRead);
}
else
printf("Open worry/n");
return 0;
}
- ASCII压缩算法实现
- 基于Huffman编码的Ascii文件压缩算法
- LZ77 压缩算法 js实现
- 压缩算法实现之LZ78
- lzw字符串压缩算法实现
- C++实现LZ77压缩算法
- 【经典算法】:ASCII码打印的算法实现
- zip 的压缩原理与实现(lz77 算法压缩)
- zip 的压缩原理与实现(lz77 算法压缩)
- 实现LZARI压缩算法的C++类
- lzw压缩算法的c语言实现
- LZW算法压缩c语言实现
- 实现LZARI压缩算法的C++类
- LZW算法压缩c语言实现
- java实现的LZW 压缩算法源码
- lzw压缩算法的c语言实现
- 纯C实现的JPEG压缩算法
- PForDelta索引压缩算法的实现
- 《FRINGE》の近期看书计划
- SQL2008的数据更新跟踪测试
- 1330 Nearest Common Ancestors //LCA
- charindex代替like并非"更快更全面"
- 写一个对象集合排序的类
- ASCII压缩算法实现
- C++结构体 应用
- jsp页面的数据导入Excel中并下载Excel
- Java从入门到精通 - Java数字处理类
- socket的一个实例
- sybio
- 蓝色星际
- 鼎桥
- 同一个类的不同对象,对象的成员函数可以互相访问各自对象的私有变量和私有成员函数