c语言文件复制系统函数 c语言文件复制程序

C语言---如何复制任意文件?

C语言复制文件主要由三种办法,你可以根据自己的知识选用一个

创新互联公司提供网站设计制作、成都网站制作、网页设计,品牌网站制作1元广告等致力于企业网站建设与公司网站制作,10多年的网站开发和建站经验,助力企业信息化建设,成功案例突破1000多家,是您实现网站建设的好选择.

方法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命令

首先#includestdlib.h

然后 程序中 调用 system(“这里写 copy的完整命令”);

C语言文件复制

不应对非文本文件使用fgetc等易受干扰的函数,建议用fread,fwrite读写二进制文件

#include "stdio.h"

/* 保护硬盘,绝对不要一个字节一个字节复制 */

#define SIZEOFBUFFER 256*1024L /* 缓冲区大小,默认为256KB */

long filesize(FILE *stream)

{

long curpos, length;

curpos = ftell(stream);

fseek(stream, 0L, SEEK_END);

length = ftell(stream);

fseek(stream, curpos, SEEK_SET);

return length;

}

int copyfile(const char* src,const char* dest)

{

FILE *fp1,*fp2;

int fsize,factread;

static unsigned char buffer[SIZEOFBUFFER];

fp1=fopen(src,"rb");

fp2=fopen(dest,"wb+");

if (!fp1 || !fp2) return 0;

for (fsize=filesize(fp1);fsize0;fsize-=SIZEOFBUFFER)

{

factread=fread(buffer,1,SIZEOFBUFFER,fp1);

fwrite(buffer,factread,1,fp2);

}

fclose(fp1);

fclose(fp2);

return 1;

}

int main()

{

copyfile("file1.txt","file2.txt");

return 0;

}

c语言中文件复制该用什么函数?

system 函数是可以运行一个外部控制台程序。

标准的复制文件方法是用API函数 CopyFile/CopyFileEx

这两个函数,详细参数和参数的意思,你查查MSDN上面写的很详细

C语言函数编写:文件复制

C语言实现一个简单的文件复制功能,Linux环境下。

思路步骤:(下代码最重要的逻辑步骤清晰)

第一步:打开源文件(要复制的文件),打开文件的方式以读的方式就可以了。

Linux C打开文件的库函数有:int open(const char *pathname,int flags),int open(const char *pathname,mode_t mode),以及 FILE *fopen(const char *path,const char *mode),FILE *fdopen(int fd,const char *mode),这几个函数,具体的使用方法就查看manual就可以了。

第二步:创建目标文件,所用的函数也是上面那几个。

第三步:读取文件。库函数有:size_t read(int fd,void *buf,size_t count),

size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream)

第三步:写入目标文件。用的库函数:size_t write(int fd,void *buf,size_t count),

size_t fwrite(void *ptr,size_t size,size_t nmemb,FILE *stream)

第四步:关闭文件。库函数:int fclose(FILE *fp) ,int close(int fd)

思路步骤就是这样子的了。下面是具体的代码实现。

#include

#include

#include

#include

#include

#include

int main(int argc,char *argv[])

{

int fd_source_file,fd_copy_file;//用接受int open()函数返回的值

//FILE *fp_source_file,*fp_copy_file;//如果用FILE *fopen()函数的话

int size_read,size_write;

char buf[1024];

char copy_file_name[50];

//检查参数的输入

if(argc3)

{

printf("usage: ./a.out source_file_path copy_file_path\n");

exit(1);

}

//复制目标文件名

strcpy(copy_file_name,argv[2]);

//打开源文件

if( (fd_source_file=open(argv[1],O_RDONLY,00744))0 )

{

perror("open source file error");

exit(1);

}

//创建目标文件

if( (fd_copy_file=open(argv[1],O_CREAT|O_RDWR)) 0 )

{

perror("create copy file error");

exit(1);

}

do

{

//读取文件内容

if( (size_read=read(fd_source_file,buf,1024)) 0 )

{

perror("read source file error");

exit(1);

}

//写入目标文件

if( (size_write=write(fd_copy_file,buf,sieze_read))0 )

{

perror("wrire file error");

exit(1);

}

}while(size_read==1024)

return 0;

}


本文题目:c语言文件复制系统函数 c语言文件复制程序
文章源于:http://scyanting.com/article/ddjeddg.html