
| 出版日期:1997-06-16 总期号:662 本年期号:22 |
|
分割拷贝大文件到软盘
王竟成 笔者在上机时,遇到了一个4m多的大文件,本打算将它压缩后拷至软盘,后来发现它是一个自解的压缩文件。如果将它自解后再压缩到软盘就有点麻烦了,于是编写了一个小程序,取名为isolate.exe,运行时只须键入:isolatefilename,然后回车即可。其中,filename指大文件的文件名,此程序在turboc2.0下编译通过。源程序如下: #include″stdio.h″ #include″string.h″ #include″stdlib.h″ #include″dos.h″ intcopy(file*fp1,file*fp2) {charbuff[2048]; intbfszΚ2048; intnumΚ0; while(fread(&buff,bfsz,1,fp1)) {fwrite(&buff,bfsz,1,fp2); num++; if(numΛ695) return(1);}} intchange(file*fp1,intn) {file*fp2; inti; char*str; n++; itoa(n,str,10); system(″a:″); if((fp2Κfopen(str,″wb″))ΚΚnull) {printf(″writediskerror!ιn″); exit(0);} iΚcopy(fp1,fp2); fclose(fp2); return(i);} voidmain(intargc,char*argv[]) {file*fp1,*fp2; char*str; inti,nΚ0; charch; if(argc!Κ2) {printf(″e.g.isolatefilenameιn″); exit(0);} if((fp1Κfopen(argv[1],″rb″))ΚΚnull) {printf(″cannotopenthefile%s″,argv[1]); exit(0);} printf(″pleaseinsert%d#diskιn″,n+1); getch(); iΚchange(fp1,n); while(i) {n++; printf(″pleaseinsert%d#diskιn″,n+1); getch(); iΚchange(fp1,n);} fseek(fp1,2048l*696*n,0); n++; itoa(n,str,10); if((fp2Κfopen(str,″wb″))ΚΚnull) {printf(″writediskerror!″); exit(0);} chΚfgetc(fp1); while(!feof(fp1)) {fputc(ch,fp2); chΚfgetc(fp1);} fclose(fp1); fclose(fp2); printf(″ιnsuccessful!ιn″);} 如在拷贝时觉得速度偏慢,可将以上程序中“system(“a:”);”一句去掉,则所分割出的文件就拷至硬盘当前目录下,然后再分别拷到软盘上即可。 在另一台机子上连接时,只须将软盘上的分割文件“1,2,3...”都拷到硬盘,再用dos的内部命令copy连接。方法:d:ιΛcopy1/b+2/b+3/b+...filename其中filename是要连接成的文件的文件。之所以将分割后的文件取名为“1,2,3...”是为了连接时方便。在遇到大字库时此程序尤为有效。 |
|||||||||||||||||