📄 main.cpp
字号:
#include "zlib.h"
#include <stdio.h>
#include <windows.h>
/*
int main()
{
unsigned char* szSouBuf,* szDesBuf;
unsigned long szDesLen, souLen;
FILE* fps = fopen("d:\\vc\\新浪首页.htm","rb");
if(fps == NULL)
return 0;
fseek(fps,0,SEEK_END);
souLen = ftell(fps);
fseek(fps,0,SEEK_SET);
szSouBuf = new unsigned char[souLen+1];
if(szSouBuf == NULL)
{
fclose(fps);
return 0;
}
fread(szSouBuf,1,souLen,fps);
fclose(fps);
szSouBuf[souLen] = 0;
szDesLen = long(souLen * 1.001 + 12);
szDesBuf = new unsigned char[szDesLen + 1];
if(szDesBuf == NULL)
{
delete []szSouBuf;
return 0;
}
unsigned long time = timeGetTime();
if(compress2(szDesBuf,&szDesLen,szSouBuf,souLen,9))
{
delete []szSouBuf;
delete []szDesBuf;
return 0;
}
time = timeGetTime() - time;
printf("共用时 %d 毫秒\n",time);
FILE* fpd = fopen("d:\\vc\\新浪首页.zlb","wb");
if(fpd == NULL)
{
delete []szSouBuf;
delete []szDesBuf;
return 0;
}
fwrite(szDesBuf,1,szDesLen,fpd);
fclose(fpd);
delete []szSouBuf;
delete []szDesBuf;
return 0;
}
*/
/*
int main()
{
unsigned char* szSouBuf,* szDesBuf;
unsigned long szDesLen, souLen;
FILE* fps = fopen("d:\\vc\\新浪首页.zlb","rb");
if(fps == NULL)
return 0;
fseek(fps,0,SEEK_END);
souLen = ftell(fps);
fseek(fps,0,SEEK_SET);
szSouBuf = new unsigned char[souLen+1];
if(szSouBuf == NULL)
{
fclose(fps);
return 0;
}
fread(szSouBuf,1,souLen,fps);
fclose(fps);
szSouBuf[souLen] = 0;
szDesLen = long(souLen * 7);
szDesBuf = new unsigned char[szDesLen];
if(szDesBuf == NULL)
{
delete []szSouBuf;
return 0;
}
unsigned long time = timeGetTime();
if(uncompress(szDesBuf,&szDesLen,szSouBuf,souLen))
{
delete []szSouBuf;
delete []szDesBuf;
return 0;
}
time = timeGetTime() - time;
printf("共用时 %d 毫秒\n",time);
FILE* fpd = fopen("d:\\vc\\新浪首页1.htm","wb");
if(fpd == NULL)
{
delete []szSouBuf;
delete []szDesBuf;
return 0;
}
fwrite(szDesBuf,1,szDesLen,fpd);
fclose(fpd);
delete []szSouBuf;
delete []szDesBuf;
return 0;
}
*/
int mycompress()
{
unsigned char* szSouBuf = NULL,* szDesBuf = NULL;
unsigned long szDesLen, souLen;
FILE* fpIndex = fopen("f:\\data\\dnpage.idx","rb");
if(fpIndex == NULL)
return -1;
FILE* fps = fopen("f:\\data\\dnpage.dat","rb");
if(fps == NULL)
{
fclose(fpIndex);
return -1;
}
FILE* fpd = fopen("f:\\data\\dnpage.zlb","wb");
if(fpd == NULL)
{
fclose(fpIndex);
fclose(fps);
return -1;
}
long i = 0;
long lTotalNum = 0;
long lBaseNum[2];
char cFlag = 1;
fread(&lBaseNum[0],sizeof(long),1,fpIndex);
unsigned long time ;
unsigned long tm1 = 0;
while(!feof(fpIndex) && i < 5000)
{
fread(&souLen,sizeof(long),1,fpIndex);
lBaseNum[1] = souLen;
souLen -= lBaseNum[0];
lBaseNum[0] = lBaseNum[1];
lTotalNum += souLen;
szSouBuf = new unsigned char[souLen];
if(szSouBuf == NULL)
{
cFlag = 0;
break;
}
souLen = fread(szSouBuf,1,souLen,fps);
szDesLen = long(souLen * 1.001 + 12);
szDesBuf = new unsigned char[szDesLen + 1];
if(szDesBuf == NULL)
{
cFlag = 0;
break;
}
time = timeGetTime();
if(compress2(szDesBuf,&szDesLen,szSouBuf,souLen,1))
{
printf("压缩错误!\n");
cFlag = 0;
break;
}
time = timeGetTime() - time;
tm1 += time;
fwrite(&szDesLen,sizeof(long),1,fpd);
fwrite(szDesBuf,1,szDesLen,fpd);
i++;
printf("i = %d\n",i);
delete []szSouBuf;
szSouBuf = NULL;
delete []szDesBuf;
szDesBuf = NULL;
}
printf("共用时%d毫秒.\n",tm1);
printf("原文件字节数为 %d。\n",lTotalNum);
fclose(fps);
fclose(fpd);
fclose(fpIndex);
delete []szSouBuf;
delete []szDesBuf;
if(cFlag)
return 0;
return 1;
}
int myuncompress()
{
unsigned char* szSouBuf = NULL,* szDesBuf = NULL;
unsigned long szDesLen, souLen;
FILE* fps = fopen("f:\\data\\dnpage.zlb","rb");
if(fps == NULL)
return 0;
FILE* fpd = fopen("f:\\data\\dnpage1.dat","wb");
if(fpd == NULL)
{
fclose(fps);
return 0;
}
long i = 0;
char cFlag = 1;
unsigned long time;
unsigned long tm = 0;
while(!feof(fps) && i<5000)
{
fread(&souLen,4,1,fps);
i++;
printf("i = %d\n",i);
szSouBuf = new unsigned char[souLen+1];
if(szSouBuf == NULL)
{
cFlag = 0;
break;
}
fread(szSouBuf,1,souLen,fps);
szSouBuf[souLen] = 0;
szDesLen = 9*souLen;
szDesBuf = new unsigned char[szDesLen];
if(szDesBuf == NULL)
{
cFlag = 0;
break;
}
time = timeGetTime();
if(uncompress(szDesBuf,&szDesLen,szSouBuf,souLen))
{
printf("解压缩错误!\n");
cFlag = 0;
break;
}
time = timeGetTime() - time;
tm += time;
fwrite(szDesBuf,1,szDesLen,fpd);
delete []szSouBuf;
szSouBuf = NULL;
delete []szDesBuf;
szDesBuf = NULL;
}
printf("共用时%d毫秒\n",tm);
fclose(fps);
fclose(fpd);
if(cFlag)
return 0;
return -1;
}
int main()
{
long j = 0;
while(1)
{
j++;
if(j%2)
{
if(mycompress())
{
printf("压缩错误!\n");
}
}
/*
else
{
if(myuncompress())
{
printf("解压缩错误!\n");
}
}
*/
if(j == 2)
break;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -