C语言文件复制

Python020

C语言文件复制,第1张

不应对非文本文件使用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)fsize>0fsize-=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

}

首先是使用库函数

比如下面代码

void ourStrCopy(char S1[] , char S2[]){strcpy(S1, S2)//该函数还有另一个版本可以按长度截取 }

还有一个函数是memcpy,这个是内存拷贝,原型是

void memcpy(void *dest, const void *src, size_t n)需要注意的是这个函数第一个和第二个指针都是void型且第二个指针不能被修改,第三个参数是需要拷贝的内存长度按字节记。

然后是用指针引用,注意这个并非赋值,而是引用,这种操作需要注意内存。

char s1[] = "abcdefg"//定义一组字符串char *s2 = s1//按照指针拷贝字符串

第三种方法就是直接赋值了

void outStrCopy(char s1[] , char s2[]){int len1 = strlen(s1)//获取第一个字符串的长度int len2 = strlen(s2)//获取第二个字符串的长度int len = 0 //字符串总长度if(len1 <= len2){len = len2 //选择COPY的长度}else{len = len1 }for(int i = 0 i <len i++){s1[i] = s2[i] //实现数据拷贝}}

BOOL

CopyFile(LPCTSTR

lpExistingFileName,LPCTSTR

lpNewFileName,BOOL

bFailIfExists

)

说明

复制文件。与vb的filecopy命令相似

返回值

Long,非零表示成功,零表示失败。会设置GetLastError

参数表

参数

类型及说明

lpExistingFileName

String,源文件名

lpNewFileName

String,目标文件名

bFailIfExists

Long,如果设为TRUE(非零),那么一旦目标文件已经存在,则函数调用会失败。否则目标文件被改写