windows 10 操作系统、电脑、应用程序等

番茄系统家园 · 2021-08-03 14:49:55

windows 10 操作系统、电脑、应用程序等

用实现文件复制功能

用实现文件复制功能

1.c代码

注释也在里面

文件名为运行出来的exe为

###(,[]){//LPTSTR类型与char*等价,表示普通字符/字符串变量,指向字符/字符串的指针。HANDLEhandleIn,handleOut;//句柄(HANDLE)是资源的标识,操作系统要管理和操作这些资源,都是通过句柄来找到对应的资源//HANDLE是一个32位的无符号整数,是一个对象的句柄,可以认为存放的是一个对象的地址//printf("%d",handleIn);DWORDreadsizeIn,readsizeOut;//#defineDWORDunsignedlong所以比较方便移植用的,Windows下经常用来保存地址(或者存放指针)CHARBuffer[BUF_SIZE];//大写的CHAR也表示CHAR为单字节字符Windows为了消除各编译器的差别,重新定义了一些数据类型//argc,argv用命令行编译程序时有用//argc:整数,用来统计你运行程序时送给main函数的命令行参数的个数//*argv[]:指针数组,用来存放指向你的字符串参数的指针,每一个元素指向一个参数//如果传入的参数不等于3的话说明用户没有输入正常的参数(参数多了或者少了)//此时提示用户正确的输入参数方法,并且退出程序if(argc!=3){printf("正确使用方法:copyfile文件名1文件名2

");return1;}//如果通过上面判断语句的话说明参数输入符合形式则进行下一个判断//(1)判断文件1是否能打开,创建一个句柄来标识输入文件//CreateFile这是一个多功能的函数,可打开或创建以下对象,并返回可访问的句柄:控制台,通信资源,目录(只读打开),磁盘驱动器,文件,邮槽,管道。handleIn=CreateFile(argv[1],GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);//printf("%ld",handleIn);//如果文件打开失败提示用户并且调用GetLastError()函数取得上一个函数(也就是CreateFile函数)操作时所产生的错误代码if(handleIn==INVALID_HANDLE_VALUE){printf("不能打开被复制文件(文件1).错误代码:%x

",GetLastError());return2;}//同上这次是判断是否能打开文件2,解释如上handleOut=CreateFile(argv[2],GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);if(handleOut==INVALID_HANDLE_VALUE){printf("不能打开目标文件(文件2).错误代码:%x

",GetLastError());return3;}//下面进行文件复制的操作调用ReadFile和WriteFile函数每次读入字节数为BUF_SIZE//readsizeIn指向实际读取字节数的指针而且ReadFile调用成功,返回非0,readsizeIn也要是大于0才表示可以继续读while(ReadFile(handleIn,Buffer,BUF_SIZE,readsizeIn,NULL)readsizeIn0){WriteFile(handleOut,Buffer,readsizeIn,readsizeOut,NULL);if(readsizeIn!=readsizeOut){printf("文件复制时出现错误。错误代码:%x

",GetLastError());return4;}}//提示复制成功!printf("文件复制时成功

");//关闭句柄CloseHandle(handleIn);CloseHandle(handleOut);return0;}

2.运行结果

我此时的文件存在情况只有1.txt和2.txt

(1)参数多或者少则提示用法

(2)被复制文件打不开

(3)成功复制

查看两个文件

(4)目的地文件打开失败

首先我要设置2.txt为只读这样就会触发第二个错误

结果

相关阅读

  • win7强行复制
  • 有效解决win7系统复制大文win7强行复制件时突然崩溃的小技巧-系统城电脑系统下载之家
  • windows 10 操作系统、电脑、应用程序等
  • 免责声明: 凡标注转载/编译字样内容并非本站原创,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如果你觉得本文好,欢迎推荐给朋友阅读;本文链接: https://m.nndssk.com/post/23540.html。
    猜你喜欢
    最新应用
    热门应用