📄 rpg_fileunpack.cpp
字号:
#include <stdio.h>
#include <windows.h>
char bytes;
FILE*fp1;
FILE*fp2;
char fn[256];
char fn2[256];
char fn3[256];
char path[256];
char fn4[256];
void RemoveFileNamePath(const char *pFullName, char *pFileName)
{
const char *pChar = strrchr(pFullName,'\\');
if(pChar)
strcpy(pFileName, ++pChar);
else
strcpy(pFileName,pFullName);
}
void main(int args,char*argv[]){
if(args==3){
strcpy(fn,argv[1]);
strcpy(path,argv[2]);
}else{
printf("输入包文件名:");
scanf("%s",fn);
printf("输入存储路径:");
scanf("%s",path);
}
fp1=fopen(fn,"rb");
int i=0;
int adds,adds2;
do{
fseek(fp1,i*320,0);
fscanf(fp1,"%d",&adds);
printf("\n当前第%d个文件,地址%d",i,adds);
fseek(fp1,i*320+64,0);
fread(fn2,256,1,fp1);
fseek(fp1,(i+1)*320,0);
fscanf(fp1,"%d",&adds2);
RemoveFileNamePath(fn2,fn3);
if(fn3[0]==0){
break;
}
sprintf(fn4,"%s%s",path,fn3);
fp2=fopen(fn4,"wb");
printf("\n文件大小%d,名称:%s",adds2-adds,fn3);
fseek(fp1,adds,0);
for(int i=0;i<adds2-adds;i++){
fread(&bytes,1,1,fp1);
fwrite(&bytes,1,1,fp2);
}
printf("\n成功存储该文件到:%s",fn4);
fclose(fp2);
i++;
}while(!feof(fp1)&&(fn3[0]!=0));
fclose(fp1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -