该复制程序用法:cp file1 file2
将 file1 的内容复制到 file2 中。程序中使用了 Windows API 。在 VS 2010 中编译通过;为了避免编译错误或警告,需要先将 #include <windows.h> 头文件放在 stdafx.h 中。
代码:
[C++] 纯文本查看 复制代码 #include "stdafx.h"
#define BUF_SIZE 256
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hIn, hOut;
DWORD nIn, nOut;
CHAR buffer[BUF_SIZE];
if (argc != 3) {
printf ("Usage: cp file1 file2\n");
return 1;
}
hIn = CreateFile(argv[1], GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hIn == INVALID_HANDLE_VALUE) {
printf ("Cannot open input file. Error: %x\n", GetLastError());
return 2;
}
hOut = CreateFile(argv[2], GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hOut == INVALID_HANDLE_VALUE) {
printf ("Cannot open output file. Error: %x\n", GetLastError());
return 3;
}
while (ReadFile(hIn,buffer, BUF_SIZE, &nIn, NULL) && nIn > 0) {
WriteFile(hOut, buffer, nIn, &nOut, NULL);
if (nIn != nOut) {
printf ("Fatal write error: %x\n", GetLastError());
return 4;
}
}
CloseHandle(hIn);
CloseHandle(hOut);
return 0;
}
程序代码来自 <<Windows 系统编程>> 。 |