使用C语言来复制一个文件(包括各种类型),主流的做法有2种:1.自定义函数 2.调用系统API 。本文介绍自定义函数的方法。
文件类型可以粗略分类为ASCII类型和二进制类型,且大多数为二进制类型,因此本文采用 fread() 和 fwrite()。
闲话不多说,上代码:
// C语言实现文件复制
// srcFile : 源文件
// destFile: 目标文件
bool copyFile( const char * srcFile , const char * destFile )
{
FILE * src , * dst ;
if( NULL == srcFile || NULL == destFile )
{
cout<<"copyFile src or dest file null !"<<endl;
return false;
}
src = fopen( srcFile , "rb" );
dst = fopen( destFile, "wb" );
if( NULL == src || NULL == dst )
{
cout<<"copyFile fopen failed !"<<endl;
return false;
}
// copy file
char buf;
while( fread( &buf , sizeof(char) , 1 , src ) != 0 )
{
// write to dst file !
fwrite( &buf , sizeof(char) , 1 , dst );
}
// don't forget to close the files
fclose( src );
fclose( dst );
return true;
}
经过测试,该函数对于ASCII文件和二进制文件都有效,并兼容 Windows 和 Linux。