⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 copydos.c

📁 不错书对C++/C程序员很有用的大家不要错过.
💻 C
字号:
#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");
  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -