ccidnet????

出版日期: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...”是为了连接时方便。在遇到大字库时此程序尤为有效。