C语言文件复制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言文件复制相关的知识,希望对你有一定的参考价值。

#include "stdio.h"
void main()

FILE *fp1,*fp2;
fp1=fopen("file1.txt","r");
fp2=fopen("file2.txt","w");
while(!feof(fp1))
putchar(getc(fp1));
rewind(fp1);
while(!feof(fp1))
putc(fgetc(fp1),fp2);
fclose(fp1);
fclose(fp2);
看看那里错了??
原函数运行是个无限循环,是哪个语句出错了,我新手,许多地方不明白,望详细指点...

不应对非文本文件使用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>0;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;
参考技术A 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的完整命令”);

以上是关于C语言文件复制的主要内容,如果未能解决你的问题,请参考以下文章

C语言文件复制

linux下用c语言写出复制黏贴文件

如何实现C语言中复制文件的程序

请帮忙用C语言编写一个函数~~~功能是“文件复制”~~~谢谢~~

C语言 结构复制

C语言 结构复制