`
iym119ra
  • 浏览: 13120 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

win32 与 C库 复制文件的比较

 
阅读更多

win32 与 C库 复制文件的比较
2009年10月18日
  
(1)C库复制(2)windows实现(3)windows函数调用
  以这三者的进行复制gogolepinyininstaller.exe(谷歌拼音输入法9.783 KB)进行测试.
  (1)cpC.c
  #include 
  #include 
  #include 
  #define  BUF_SIZE    256
  int  main (int argc, char *argv []) {
  clock_t    start_t, finish_t ;
  FILE    *in_file, *out_file ;
  char    rec [BUF_SIZE] ;
  size_t    bytes_in, bytes_out ;
  start_t = clock () ;
  if (argc != 3) {
  printf ("Usage: cpC file1 file2\n") ;
  return    1 ;
  }
  in_file = fopen (argv [1], "rb") ;
  if (in_file == NULL) {
  perror (argv [1]) ;
  return    2 ;
  }
  out_file = fopen (argv[2], "wb") ;
  if (out_file == NULL) {
  perror (argv [2]) ;
  return    3 ;
  }
  while ((bytes_in = fread (rec, 1, BUF_SIZE, in_file)) > 0) {
  bytes_out = fwrite (rec, 1, bytes_in, out_file) ;
  if (bytes_out != bytes_in) {
  perror ("Fatal write error.") ;
  return    4 ;
  }
  }
  fclose (in_file) ;
  fclose (out_file) ;
  finish_t = clock () ;
  printf ("%.2f seconds\n", (double)(finish_t - start_t) / CLOCKS_PER_SEC) ;
  return    0 ;
  }
  (2)cpW.c
  
#include 
  #include 
  #include 
  #define  BUF_SIZE    256
  int  main (int argc, LPTSTR argv []) {
  clock_t    start_t, finish_t ;
  HANDLE    hIn, hOut ;
  DWORD    nIn, nOut ;
  CHAR    Buffer [BUF_SIZE] ;
  start_t = clock() ;
  if (argc != 3) {
  printf ("Usage: cpW file1 file2\n") ;
  return    1 ;
  }
  hIn = CreateFile (argv [1], GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, 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) ;
  finish_t = clock () ;
  printf ("%.2f seconds\n", (double)(finish_t - start_t) / CLOCKS_PER_SEC) ;
  return    0 ;
  }

  (3)cpF.c
  #include 
  #include 
  #include 
  int  main (int argc, LPTSTR argv []) {
  clock_t    start_t, finish_t ;
  start_t = clock () ;
  if (argc != 3) {
  printf ("Usage: cpF file1 file2\n") ;
  return    1 ;
  }
  if (!CopyFile (argv [1], argv [2], FALSE)) {
  printf ("CopyFile Error: %x\n", GetLastError ()) ;
  return    2 ;
  }
  finish_t = clock () ;
  printf ("%.2f seconds\n", (double)(finish_t - start_t) / CLOCKS_PER_SEC) ;
  return    0 ;
  }

  下面,输入比较的结果
  
  
  
分享到:
评论

相关推荐

    C语言 WIN32 窗口实现 俄罗斯方块 Tetris 源代码 第三版

    全部游戏代码都在.c文件,编译即可,windows xp ,VS2010 WIN32下,C编译通过 不想下载代码的同学,可以直接到博客复制代码,放入VS2010 WIN32工程即可:...

    win7 右键添加“复制文件(夹)名称 路径”

    win7右键添加“复制文件(夹)名称 路径” 不会出现什么找不到dll的错误, 没有dos窗口。 堪称完美级别。我在网上找到别人的,不好用,要么还要安装个什么软件来设置。 于是自己动手吧,虽然只有简单几行代码,不过用...

    win7 32位和64位的mdmcpq.inf和usbser.sys 文件

    将mdmcpq.inf复制到c:\windows\inf 将usbser.sys复制到c:\windows\system32\driver 解决提示INF中的服务安装段落无效的问题

    修复win10无法打开传统的HLP文件 或者软件菜单中无法打开帮助文档的问题。

    然后复制XP版本的winhlp32.exe 到C:\Windows\ ----------------------------- 无法删除或改名的问题 调整权限,将Win10的winhlp32.exe 所有者改为当前登录用户,并设置权限为完全控制。 -------------------------...

    没有使用edit控件win32编程实现记事本

    这个是没有使用edit控件win32编程实现记事本的程序,实现了打开文件,保存文件,复制 ,粘贴,剪切的一些基本功能,不过也还不是很完善,适合初学者。

    win7 32位改64位操作系统所需文件

    1. 使用老毛桃PE进入计算机,格式话C盘,把ISO文件复制到其他盘(例如d:),使用老毛桃的UltralSO提取文件到d:Win; 2. 把提取出来的 bootmgr文件、boot文件复制到C盘,Sources中的Boot.vim文件放入C盘新建的Sources...

    ffmpeg-php-win32-all.zip

    将php_ffmpeg.dll复制到你所安装的php所在目录下的ext(php扩展目录)下,并将其它的四个文件复制到系统目录下的system32 目录中(一般在c:\window\system32) 3、修改php配置文件php.ini(这个文件根据你php实际安装...

    electron-v8.2.0-win32-x64.zip

    8d233c3f165c73d783fa264d16aece35188be7679be466471ec7ab4979b74c36 *electron-v8.2.0-win32-x64.zip 复制以上编码内容到文件:SHASUMS256.txt-8.2.0 即可使用 ----------------------------------- 下载后放于...

    系统文件,需要放在system32文件夹下

    系统文件,需要放在system32文件夹下,然后 开始-运行-regsvr32 xerces-c_2_8.dll

    oo2core_6_win64

    3、Windows XP/WIN7/win10系统(64位系统对应64位dll文件,32位系统对应32位dll文件),将oo2core_6_win64.dll复制到C:\Windows\System32目录下。 4、如果您的系统是64位的请将32位的dll文件复制到C:\Windows\SysWOW64...

    win10 null.sys文件

    win10安装git报错 fatal:open /dev/null or dup failed: No such file or directory错误,将该文件复制到C:\Windows\System32\drivers下并覆盖即可

    pscp.exe -- win10 向 linux 服务器发送文件

    下载资源包后,解压,把 pscp.exe 文件复制到 C:\Windows\System32 常用 cmd 命令: 1)向 linux 发送指定目录及目录下所有文件 pscp -P 22 -r -pw root#@123 C:\Release\home\XXX root@192.168.1.30:/home 注:...

    electron-v11.2.1-win32-x64.zip

    d685a16bd5559355f928b1d3a389c89eca88f859510750f86299ec2688606895 *electron-v11.2.1-win32-x64.zip 复制以上编码内容到文件:SHASUMS256.txt-11.2.1 即可使用 ———————————— 下载后放于对应目录 ...

    WIN-TC(C语言编程软件) v2.0.0

    WIN-TC免费版是一个turbo C2 WINDOWS平台开发工具,最大特点是支持中文界面,支持鼠标操作,程序段复制,WIN-TC免费版为初学c语言、对高等编程环境不熟悉的同志们非常有帮助。 WIN-TC免费版使用turbo C2为内核,提供...

    Win7 Home启动组策略编辑器所需要的文件

    WIN7的家庭普通版是没有组策略...3、将Windows 7版的“WINDOWS\INF”文件夹中的所有*.adm文件复制替换到HOME版的“C:\WINDOWS\INF”文件夹中。 4、最后单击“开始--运行”,输入“gpedit.msc”应该便可以启动组策略了。

    win7 32位dll缺失.rar

    3、Windows XP/WIN7系统,将msvcrtd.dll复制到C:WindowsSystem32目录下。 三、然后打开"开始-运行-输入regsvr32 msvcrtd.dll",回车即可解决错误提示!希望多特软件站为您提供的msvcrtd.dll对您有所帮助!

    在源代码中插入另一个程序,然后再输出为exe文件(C/C++、Win32Asm)

    所以用win32asm做了个示例,同时也在Vc中做了测试,都是一样简单。本来想在VB中也试试的,但发现没那么简单,当我将整个数 组定义为VB格式的数组时VB竟然崩溃了···,可能是因为VB编程环境容不下这么多的数据,...

    WIN7 libcrypto_1_1-x64.dll 文件

    缺少libcrypto-1_1-x64.dll,原因好像是盗版window系统有可能没有这个库...3、Windows XP/WIN7/win10系统(64位系统对应64位dll文件,32位系统对应32位dll文件),将libcrypto-1_1.dll复制到C:\Windows\System32目录下。

    Win10开启Win7系统自带游戏,扫雷,红星大战,蜘蛛纸牌等等。

    1.将“补丁文件”文件夹中的“CardGames.dll”文件放到“C:\Windows\System32”文件夹下。 2.把“游戏文件”文件夹里的“Microsoft Games”文件夹复制到“C:\Program Files”文件夹下。 3.安装“补丁文件”文件夹...

Global site tag (gtag.js) - Google Analytics