⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 auto.cpp

📁 这是我自己写的wince程序
💻 CPP
字号:
////////////////////////////////////////////////////
//自解压文件的源代码
#include <stdio.h>
#include <stdlib.h>
/*29014*/

double al_se=0;
double no_se=0;
double len_se=0;
double len_db=0;
int pe_num=0;

void main()
{
	FILE *in;
	FILE *out;
	long unsigned int index;
	unsigned char *len_date;
	unsigned short last,af_length,cp_length;
	unsigned char tem,ah,al;

	unsigned int a;
	unsigned int b;
	unsigned int c,i,j;
	long d=0;
	long e;
	unsigned int address;
	char  filena[20];
	unsigned char co_len;
	unsigned char fi_num;
	long fi_len;
	unsigned char fn_len;  
	int flag=1;
	char thisfile[20]={"ak4gt7"};
	char cxuan='n';

	unsigned char neirong[15377];
	unsigned short af_num,a_index,a_begin;

	if((in=fopen(thisfile,"rb")) == NULL)
		exit(0);
	fseek(in,12288,0);
	fread(&co_len,1,1,in);
	fi_num=co_len;
	for(;;)
	{
        d=0;
		fi_len=0;
		fn_len=0;
		fread(&fn_len,1,1,in);
		if(feof(in)) break;
		fread(filena,fn_len,1,in);
		if((out=fopen(filena,"wb")) == NULL)
			exit(0);
		fread(&fi_len,4,1,in);
		al_se=no_se=0;
		al_se=fi_len/16384+1;
		while(1)
		{
			last=0;
			af_length=0;
			cp_length=0;
			fread(&last,2,1,in);
			if(last == 0) break;
			fread(&af_length,2,1,in);
			fread(&cp_length,2,1,in);

			if(al_se-no_se >= 4)
				len_se=last/4+3;
			else
				len_se=last/(al_se-no_se)+2;

			if((len_date=(unsigned char *)malloc(cp_length))== NULL)
				exit(0);
			for(a=0;;)
			{
				fread(&tem,1,1,in);
				len_date[a]=tem/16;
				a++;
				if(a == cp_length) break;
				len_date[a]=tem%16;
				a++;
				if(a == cp_length) break;
			}

			af_num=15360;
			a_index=a_begin=0;

			for(a=b=0;a<last;)
			{
				if(a>=af_num)
				{
					fwrite(neirong,a_index,1,out);
					a_begin=a;
					af_num+=a_index;
					a_index=0;
				}
				fread(&tem,1,1,in);
				if(tem != 255)  {neirong[a_index]=tem;a++;a_index++;}
				else
				{
					if(len_date[b] == 0) {neirong[a_index]=tem;a++;a_index++;}
					else
					{

						c=len_date[b]+2;
						fread(&ah,1,1,in);
						fread(&al,1,1,in);
						address=ah*256+al;

						if(address >= a_begin)
						{
							for(i=0;i<c;i++)
								neirong[a_index+i]=neirong[address-a_begin+i];
							a_index+=c;
							a+=c;
						}
						else
						{

							e=(long)address;
							e+=d;
							fclose(out);
							if((out=fopen(filena,"ab+")) == NULL)
								exit(0);
							fseek(out,0,SEEK_END);
							index=ftell(out);

							if((index-c)>=e)
							{
								fseek(out,e,SEEK_SET);
								fread(neirong+a_index,c,1,out);
								a_index+=c;
							}
							else
							{
								j=index-e;
								fseek(out,e,0);
								fread(neirong+a_index,j,1,out);
								a_index+=j;

								for(i=0;i<c-j;i++)
									neirong[a_index+i]=neirong[a_begin+i];
								a_index=a_index-j+c;
							}
							fseek(out,index,0);
							a+=c;
						}
					}
					b++;
				}
			}
			fwrite(neirong,a_index,1,out);
			free(len_date);
			d+=last;
		}
		fclose(out);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -