COPYDOS.C
资源名称:C.rar [点击查看]
上传用户:qq5388545
上传日期:2022-07-04
资源大小:29849k
文件大小:2k
源码类别:

界面编程

开发平台:

C/C++

  1. #include <stdio.h>
  2. #include <dos.h>
  3. void main (int argc, char **argv)
  4.   {
  5.     union REGS inregs, outregs;
  6.     struct SREGS segs;
  7.     char buffer[256];
  8.     unsigned source_handle, target_handle;
  9.     if (*argv[1] && *argv[2])
  10.       {
  11.  // Open the file to copuy
  12.  inregs.h.ah = 0x3D;
  13.  inregs.h.al = 0;     // Open for read access
  14.  inregs.x.dx = (unsigned) argv[1];
  15.  segread (&segs);
  16.  intdosx(&inregs, &outregs, &segs);
  17.  if (outregs.x.cflag)
  18.    printf ("Error opening source file %sn", argv[1]);
  19.  else
  20.    {
  21.       source_handle = outregs.x.ax;
  22.       // Create the target file, truncating an
  23.       // existing file with the same name
  24.       inregs.h.ah = 0x3C;
  25.       inregs.x.cx = 0;     // Open with normal attribute
  26.       inregs.x.dx = (unsigned) argv[2];
  27.       intdosx (&inregs, &outregs, &segs);
  28.       if (outregs.x.cflag) 
  29. printf ("Error creating target file %sn", argv[2]);
  30.       else                  
  31. {
  32.    target_handle = outregs.x.ax;
  33.        
  34.    do {
  35.      // Read the source data
  36.      inregs.h.ah = 0x3F;
  37.      inregs.x.bx = source_handle;
  38.      inregs.x.cx = sizeof(buffer);
  39.      inregs.x.dx = (unsigned) buffer;
  40.      intdosx (&inregs, &outregs, &segs);
  41.      
  42.      if (outregs.x.cflag)
  43.        {
  44.  printf ("Error reading source filen");
  45.  break;
  46.        }
  47.      else if (outregs.x.ax)  // Not end of file
  48.        {           
  49.  // Write the data                                           
  50.  inregs.h.ah = 0x40;
  51.  inregs.x.bx = target_handle;
  52.  inregs.x.cx = outregs.x.ax;
  53.  inregs.x.dx = (unsigned) buffer;
  54.  intdosx (&inregs, &outregs, &segs);
  55.      
  56.  if (outregs.x.cflag)
  57.    {
  58.      printf ("Error writing target filen");
  59.      break;
  60.    }
  61.       }
  62.    } while (outregs.x.ax != 0);
  63.   // Close the files
  64.   inregs.h.ah = 0x3E;
  65.   inregs.x.bx = source_handle;
  66.   intdos (&inregs, &outregs);
  67.   inregs.x.bx = target_handle;
  68.   intdos (&inregs, &outregs);      
  69. }
  70.    }         
  71.       }
  72.     else
  73.       printf ("Specify source and target filenamesn"); 
  74.   }