copydos.c

  name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-5572165936844014&dt=1194442938015&lmt=1194190197&format=336x280_as&output=html&correlator=1194442937843&url=file%3A%2F%2F%2FC%3A%2FDocuments%2520and%2520Settings%2Flhh1%2F%E6%A1%8C%E9%9D%A2%2FCLanguage.htm&color_bg=FFFFFF&color_text=000000&color_link=000000&color_url=FFFFFF&color_border=FFFFFF&ad_type=text&ga_vid=583001034.1194442938&ga_sid=1194442938&ga_hid=1942779085&flash=9&u_h=768&u_w=1024&u_ah=740&u_aw=1024&u_cd=32&u_tz=480&u_java=true" frameborder="0" width="336" scrolling="no" height="280" allowtransparency="allowtransparency"> #include <stdio.h>
#include <dos.h>

void main(int argc, char **argv)
  {
    union REGS inregs, outregs;
    struct SREGS segs;

    char buffer[256];

    unsigned source_handle, target_handle;

    if (*argv[1] && *argv[2])
      {
   // Open the file to copy
   inregs.h.ah = 0x3D;
   inregs.h.al = 0;            // Open for read access
   inregs.x.dx = (unsigned) argv[1];
   segread (&segs);
   intdosx(&inregs, &outregs, &segs);

    if (outregs.x.cflag)
         printf ("Error opening source file %s/n", argv[1]);
     else
      {
        source_handle = outregs.x.ax;

          // Create the target file, truncating an
        // existing file with the same name
        inregs.h.ah = 0x3C;
        inregs.x.cx = 0;     // Open with normal attribute
        inregs.x.dx = (unsigned) argv[2];
        intdosx (&inregs, &outregs, &segs);

        if (outregs.x.cflag)
    printf ("Error creating target file %s/n", argv[2]);
        else
    {
       target_handle = outregs.x.ax;
               do {
          // Read the source data
          inregs.h.ah = 0x3F;
          inregs.x.bx = source_handle;
          inregs.x.cx = sizeof(buffer);
          inregs.x.dx = (unsigned) buffer;
          intdosx (&inregs, &outregs, &segs);
                if (outregs.x.cflag)
           {
        printf ("Error reading source file/n");
        break;
           }
          else if (outregs.x.ax)  // Not end of file
           {
        // Write the data
        inregs.h.ah = 0x40;
        inregs.x.bx = target_handle;
        inregs.x.cx = outregs.x.ax;
        inregs.x.dx = (unsigned) buffer;
        intdosx (&inregs, &outregs, &segs);

        if (outregs.x.cflag)
                       {
            printf ("Error writing target file/n");
            break;
           }
           }
      } while (outregs.x.ax != 0);

     // Close the files
     inregs.h.ah = 0x3E;
     inregs.x.bx = source_handle;
     intdos (&inregs, &outregs);
     inregs.x.bx = target_handle;
     intdos (&inregs, &outregs);
   }
    }
      }
    else
      printf ("Specify source and target filenames/n");
  }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值