Thứ Tư, 29 tháng 4, 2015

phần mềm split and join file part,001,002



#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#include<Windows.h>
void layten(char *duongdan,char *ten)
{
int d=0;
for(int i=strlen(duongdan)-1;i>=0;i--)
if(duongdan[i]!='/' && duongdan[i]!='\\') ten[d++]=duongdan[i];
else break;
ten[d]='\0';
for(int i=0;i<strlen(ten)/2;i++)
{
char c=ten[i];
ten[i]=ten[strlen(ten)-1-i];
ten[strlen(ten)-1-i]=c;
}
}
void bang(char *a,char *b)
{
for(int i=0;i<strlen(b);i++) a[i]=b[i];
a[strlen(b)-1]='\0';
}
int insertpass(char *duongdan,char *mk)
{
FILE *t=fopen(duongdan,"rb+");
FILE *f=fopen("logTKT.bin","wb+");
if(t==NULL || f==NULL) return 0;
fwrite(mk,8,1,f);
char s[2];
while(fread(s,1,1,t)) fwrite(s,1,1,f);
rewind(t);rewind(f);
while(fread(s,1,1,f)) fwrite(s,1,1,t);
fcloseall();
remove("logTKT.bin");
return 1;
}
int pass_ok(char *s)
{
int dem=0;
for(int i=0;i<strlen(s);i++)
if(s[i]>='0' && s[i]<='9') dem++;
if(dem!=strlen(s) || dem!=6) return 0;
s[6]=s[7]='#';
s[8]='\0';
return 1;
}
int split(char *duongdan,char *thumuc,int n)
{
char ten[100],duongdan2[100],a[10],*s=new char[2];
unsigned long dungluong,dem;
int i;
layten(duongdan,ten);
strcat(thumuc,"/");
strcat(thumuc,ten);
strcat(thumuc,".partt");
FILE *t=fopen(duongdan,"rb");
if(t==NULL)
{
printf("\nduong dan file khong hop le!");
return 0;
}
fseek(t,0,2);
dungluong=ftell(t)/n;
rewind(t);
for(i=1;i<n;i++)
{
bang(duongdan2,thumuc);
a[0]='\0';
itoa(i,a,10);
strcat(duongdan2,a);
FILE *f=fopen(duongdan2,"wb");
if(f==NULL)
{
printf("\nduong dan thu muc chua file ket qua khong hop le!");
return 0;
}
dem=0;
do{
fread(s,1,1,t);
fwrite(s,1,1,f);
dem+=1;
}while(dem!=dungluong);
fclose(f);
}
bang(duongdan2,thumuc);
a[0]='\0';
itoa(n,a,10);
strcat(duongdan2,a);
FILE *f=fopen(duongdan2,"wb");
if(f==NULL)
{
printf("\nduong dan thu muc chua file ket qua khong hop le!");
return 0;
}
while(fread(s,1,1,t)) fwrite(s,1,1,f);
fclose(f);
delete []s;
fclose(t);
return 1;
}
int join(char *duongdan,char *thumuc)
{
int i;
char ten[100],duongdanketqua[100],a[10],s[2],dd[100];
layten(duongdan,ten);
for(i=strlen(ten)-1;i>=0;i--)
if(ten[i]!='.') ten[i]='\0';
else break;
ten[i]='\0';
duongdanketqua[0]='\0';
strcat(duongdanketqua,thumuc);
if(strlen(duongdanketqua)>0)strcat(duongdanketqua,"/");
strcat(duongdanketqua,ten);
FILE *t=fopen(duongdanketqua,"wb");
if(t==NULL)
{
printf("\nduong dan thu muc chua file ket qua khong hop le!\n");
return 0;
}
for(i=strlen(duongdan)-1;i>=0;i--)
if(duongdan[i]>='0' && duongdan[i]<='9') duongdan[i]='\0';
else break;
i=1;
while(1)
{
a[0]='\0';
itoa(i++,a,10);
bang(dd,duongdan);
strcat(dd,"t");
strcat(dd,a);
FILE *f=fopen(dd,"rb");
if(i==1 && f==NULL)
{
printf("\nduong dan file khong hop le!");
return 0;
}
if(f==NULL) break;
while(fread(s,1,1,f)) fwrite(s,1,1,t);
fclose(f);
}
fclose(t);
return 1;
}
int split2(char *duongdan,char *thumuc,char *dl)
{
unsigned long dungluong=0,dem;
int i;
char a[100],ten[100],duongdan2[100],s[2];
layten(duongdan,ten);
if(strlen(thumuc)>0)strcat(thumuc,"/");
strcat(thumuc,ten);
strcat(thumuc,".partt");
for(i=0;i<strlen(dl);i++)
if(dl[i]>='0' && dl[i]<='9') a[i]=dl[i];
else break;
a[i]='\0';
dungluong+=atol(a);
if(dl[i]=='K') dungluong*=1024;
if(dl[i]=='M') dungluong*=1024*1024;
FILE *t=fopen(duongdan,"rb");
if(t==NULL)
{
printf("\nduong dan file khong hop le!");
return 0;
}
i=1;
while(!feof(t))
{
bang(duongdan2,thumuc);
a[0]='\0';
itoa(i++,a,10);
strcat(duongdan2,a);
FILE *f=fopen(duongdan2,"wb");
if(f==NULL)
{
printf("\nduong dan thu muc chua file ket qua khong hop le!");
return 0;
}
dem=0;
for(dem=1;dem<=dungluong;dem++)
if(fread(s,1,1,t)) fwrite(s,1,1,f);
else break;
fclose(f);
}
return 1;
}
int co_pass(char *duongdan,char *pass)
{
FILE *t=fopen(duongdan,"rb+");
if(t==NULL) return -1;
char s[10];
fread(s,8,1,t);
if(s[6]=='#' && s[7]=='#')
{
int i;
for(i=0;i<6;i++) pass[i]=s[i];
pass[i]='\0';
fclose(t);
return 1;
}
fclose(t);
return 0;
}
void xuly_pass(char *duongdan)
{
FILE *t=fopen(duongdan,"rb");
FILE *f=fopen("logTKT.bin","wb+");
char s[10];
fread(s,8,1,t);
while(fread(s,1,1,t)) fwrite(s,1,1,f);
rewind(f);fclose(t);
t=fopen(duongdan,"wb");
while(fread(s,1,1,f)) fwrite(s,1,1,t);
fcloseall();
remove("logTKT.bin");
}
void main()
{
char duongdan[100],thumuc[100],dungluong[100],pass[100];
int n,k=1,kt,kiemtrapass;
while(k!=0)
{
system("cls");
printf("\n\n________________MENU___________________\n");
printf("| 1. chia file thanh n part.(split1) |\n");
printf("| 2. chia file theo dung luong.(split2)|\n");
printf("| 3. gop file (join) |\n");
printf("| 0. Thoat. |\n");
printf("________________________________________\n");
scanf("%d",&k);



if(k==1)
{
kiemtrapass=0;
printf("\nnhap vao DUONG DAN FILE chua file can Split: ");fflush(stdin);gets(duongdan);
printf("\nnhap vao THU MUC chua file ket qua Split: ");fflush(stdin);gets(thumuc);
printf("\nnhap vao SO PART can Split: N=");scanf("%d",&n);
printf("\nDo you Set PassWord?? 1-yes; 0-no; : ");scanf("%d",&kt);
if(kt==1)
{
kiemtrapass=1;
int kc,kl;
do{
kc=0;
printf("\nnhap 6 chu so password: ");fflush(stdin);gets(pass);
kl=pass_ok(pass);
if(kl==0)
{
printf("\nnhap pass sai dinh dang! nhap lai!");
kc=1;
}
}while(kc==1);
printf("\ndang cai dat PassWord vao file! doi nhe! ...");
kc=insertpass(duongdan,pass);
if(kc==0)
{
printf("\nduong dan file khong hop le!");
goto ketthuc1;
}
}
printf("\nDANG XU LY! VUI LONG DOI! ...");
kt=split(duongdan,thumuc,n);
if(kiemtrapass==1)xuly_pass(duongdan);
if(kt==1) printf("\nOK - Da Xong!\n");
ketthuc1:;
system("pause");
}




else if(k==2)
{
kiemtrapass=0;
printf("\nnhap vao DUONG DAN FILE chua file can Split: ");fflush(stdin);gets(duongdan);
printf("\nnhap vao THU MUC chua file ket qua Split: ");fflush(stdin);gets(thumuc);

do{
kt=0;
printf("\nnhap vao DUNG LUONG 1 part can Split: dung luong =");fflush(stdin);gets(dungluong);
int dem=0;
for(int i=0;i<strlen(dungluong);i++)
if((dungluong[i]>='0' && dungluong[i]<='9') || dungluong[i]=='B' || dungluong[i]=='K' || dungluong[i]=='M')
dem++;
if(dem!=strlen(dungluong))
{
printf("\nkhong hop le!");
kt=1;
}
}while(kt);

printf("\nDo you Set PassWord?? 1-yes; 0-no; : ");scanf("%d",&kt);
if(kt==1)
{
kiemtrapass=1;
int kc,kl;
do{
kc=0;
printf("\nnhap 6 chu so password: ");fflush(stdin);gets(pass);
kl=pass_ok(pass);
if(kl==0)
{
printf("\nnhap pass sai dinh dang! nhap lai!");
kc=1;
}
}while(kc==1);
printf("\ndang cai dat PassWord vao file! doi nhe! ...");
kc=insertpass(duongdan,pass);
if(kc==0)
{
printf("\nduong dan file khong hop le!");
goto ketthuc2;
}
}
printf("\nDANG XU LY! VUI LONG DOI! ...");
kt=split2(duongdan,thumuc,dungluong);
if(kiemtrapass==1)xuly_pass(duongdan);
if(kt==1) printf("\nOK - Da Xong!\n");
ketthuc2:;
system("pause");
}



else if(k==3)
{
printf("\nnhap vao DUONG DAN FILE part1: ");fflush(stdin);gets(duongdan);
printf("\nnhap vao THU MUC chua file ket qua: ");fflush(stdin);gets(thumuc);
char lay_pass[100];
printf("\ndang xu ly! ...");
int mk=co_pass(duongdan,lay_pass);
if(mk==-1)
{
printf("\nduong dan file khong hop le!");
goto ketthuc3;
}
else if(mk==1)
{
char check_pass[100];
printf("\nnhap PASS de join file: ");fflush(stdin);gets(check_pass);
if(strcmp(lay_pass,check_pass)!=0)
{
printf("\nnhap pass sai!!!");
goto ketthuc3;
}
else xuly_pass(duongdan);
}
printf("\nDANG XU LY! VUI LONG DOI! ...");
kt=join(duongdan,thumuc);
if(kt==1) printf("\nOK - Da Xong!\n");
ketthuc3:;
system("pause");
}
else printf("\n\nTAM BIET!\n");
}
getch();
}

Không có nhận xét nào:

Đăng nhận xét