C语言---如何复制任意文件?
①请问用C语言如何复制任意文件(如:rmvb,avi,ppt,word,*.exe等等,就像使用ctrl+c一样什么都能复制,我看书上只写可以复制txt与b文件啊)?②是...
①请问用C语言如何复制任意文件(如:rmvb,avi,ppt,word,*.exe等等,就像使用ctrl+c一样什么都能复制,我看书上只写可以复制txt与b文件啊)?
②是否有相应的函数? 展开
②是否有相应的函数? 展开
4个回答
展开全部
C语言复制文件主要由三种办法,你可以根据自己的知识选用一个
方法1)利用C语言的二进制读写函数
自己用fopen打开源文件和目标文件,然后用循环读写实现复制
方法2)利用操作系统的文件复制函数
例如Windows就有如下API函数可以复制文件
BOOL CopyFile(
LPCTSTR lpExistingFileName, // name of an existing file
LPCTSTR lpNewFileName, // name of new file
BOOL bFailIfExists // operation if file exists
);
第一个参数是用来存放当前要处理文件的路径。
第二个参数是用来存放用户指定的新路径。
第三个参数它是用来判断用户指定的新路径是否已经存在要存放的路径,如果为TRUE,则新路径中已经存在该文件了,该函数调用失败,否则就调用成功。
方法3:C语言调用操作系统的copy命令
首先#include<stdlib.h>
然后 程序中 调用 system(“这里写 copy的完整命令”);
方法1)利用C语言的二进制读写函数
自己用fopen打开源文件和目标文件,然后用循环读写实现复制
方法2)利用操作系统的文件复制函数
例如Windows就有如下API函数可以复制文件
BOOL CopyFile(
LPCTSTR lpExistingFileName, // name of an existing file
LPCTSTR lpNewFileName, // name of new file
BOOL bFailIfExists // operation if file exists
);
第一个参数是用来存放当前要处理文件的路径。
第二个参数是用来存放用户指定的新路径。
第三个参数它是用来判断用户指定的新路径是否已经存在要存放的路径,如果为TRUE,则新路径中已经存在该文件了,该函数调用失败,否则就调用成功。
方法3:C语言调用操作系统的copy命令
首先#include<stdlib.h>
然后 程序中 调用 system(“这里写 copy的完整命令”);
展开全部
书上的txt就是记事本文件,b就是其他一切文件,函数就是那些,fopen,fread、fwrite,或者使用open、read、write。
另外,文件复制可以使用system函数,例如:
system("copy c:\\abc.rmvb d:\\movies\\");
另外,文件复制可以使用system函数,例如:
system("copy c:\\abc.rmvb d:\\movies\\");
更多追问追答
追问
这个需要什么头文件么?
追答
其实几乎所有的头文件都不是必须的,你不用include语句往往一般的程序都可以工作,试试看吧。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
b文件 就是以二进制形式复制文件,这样可以操作所有文件
原则上,所有的文件都应该以b形式来操作。之所以把TXT文件单列出来,是因为TXT本身就是以ASCII码形式存储的,你不管怎么操作都不会损坏。
原则上,所有的文件都应该以b形式来操作。之所以把TXT文件单列出来,是因为TXT本身就是以ASCII码形式存储的,你不管怎么操作都不会损坏。
更多追问追答
追问
谢谢,我试了,用b读,写exe,出现乱码......而且复制的新文件不可用。
追答
exe文件,只能复制.读出来是乱码,更不能写。。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为书上的例子简单,所以用txt文件做讲解
用fopen的时候用"b"的话,所有文件都能复制的
相应的函数就是 fopen, fread, fwrite
用fopen的时候用"b"的话,所有文件都能复制的
相应的函数就是 fopen, fread, fwrite
追问
谢谢,我试了,用b读,写exe,出现乱码......而且复制的新文件不可用。
追答
不但要用b读,还要用b写……
如果你也用b写了,那就是你代码的问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询