📄 压缩.c
字号:
#include <stdio.h>
#include <stdlib.h>
#include <dir.h>
#include "zlib.h"
#include "name_def.h"
#define Quit(T) {\
printf (T);\
getch ();\
return 0;\
}
#define skip(T) {\
if (strncmp(ft.name, T, strlen(T)) == 0)\
continue;\
}
typedef unsigned int uint;
uint i = 0;
gzFile gTarget;
FILE *cRecord;
char *buffer;
FILE *fp;
void find_and_save(char *p){
struct _finddata_t ft;
long handle = _findfirst(p, &ft);
char* pt;
do{
if (ft.name[0] == '.')
continue;
skip (_DAT);
skip (_REC);
skip (_TEM);
skip (_COL);
skip (_DLL);
skip (_MAK);
skip (_LEN);
pt = malloc (260);
strcpy (pt, p);
pt [strlen(pt)-1] = 0;
strcat (pt, ft.name);
printf ("%08x:%s", ft.attrib, ft.name);
if((ft.attrib&0x10) == 0x10) //Directory
{
strcat (pt, "\\*");
printf ("------->goto directory:\t%s\n", pt);
find_and_save (pt);
printf ("------->back to directory:\t%s\n", p);
}
else if((ft.attrib&0x20) == 0x20) //File
{
printf ("\tand\trecord file:%s\n", ft.name);
fp = fopen (pt, "rb");
fprintf (cRecord, "%d:%s\n", ft.size, pt);
fflush (cRecord);
while (!feof(fp)){
i = fread (buffer, 1, 1024, fp);
gzwrite (gTarget, buffer, i);
}
fclose (fp);
}
free (pt);
}while(_findnext(handle, &ft) == 0);
}
int main(){
if ((gTarget = gzopen (_DAT, "wb")) == 0)
Quit ("Open target compress file failed!");
if ((cRecord = fopen (_REC, "wb")) == 0)
Quit ("Open record file failed!");
buffer = malloc (1024);
find_and_save ("*");
free (buffer);
gzclose (gTarget);
fprintf (cRecord, _END);
fclose (cRecord);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -