zfbm.c
来自「文件压缩中的游程编码源程序。已经测试通过。对重复字符较多的文件压缩率较高。」· C语言 代码 · 共 67 行
C
67 行
/*该函数将一样的char型字符串压缩成[字符]@[个数]的形式*/
#include <stdio.h>
main()
{
unsigned int count;/*计数器*/
unsigned int i;
char ch;
char ch1;/*字符寄存器*/
FILE * fp,*fp1;
char sourcefilename[10];
char destfilename[10];
printf("please input sourcefilename:");
scanf("%s",sourcefilename);
if((fp=fopen(sourcefilename,"r+"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
printf("please input destfilename:");
scanf("%s",destfilename);
fp1=fopen(destfilename,"a+");
ch=fgetc(fp);
ch1=ch;
count=1;
while(!feof(fp))
{
ch=fgetc(fp);
if(ch1==ch) //找一样的,计数
{
count++;
if(count<65535)
continue;
else //在目标文件中插入一个@65536,再从头开始
{
fputc('@',fp1);
fputc(ch,fp1);
fprintf(fp1,"%d",count);
fputc('#',fp1);
ch=fgetc(fp);
ch1=ch;
count=1;
}
}
else //不一样
{
if(count<4) //计数不到4,在目标文件中写入count个
{
for(i=1;i<=count;i++)
fputc(ch1,fp1);
}
else //计数大于4,写成ch1@count
{
fputc('@',fp1);
fputc(ch1,fp1);
fprintf(fp1,"%d",count);
fputc('#',fp1);
}
ch1=ch; //下一个接着来
count=1;
}
}
fclose(fp);
fclose(fp1);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?