文件的复制
/**
* 文件的复制
*/
#include <stdio.h>
#include <stdlib.h>
int main() {
// 目标文件
char *fileName = "E:\\CProject\\file\\string.txt";
// Copy文件
char *fileCopyName = "E:\\CProject\\file\\stringCopy.txt";
// rb 读取二进制数据
FILE *file = fopen(fileName, "rb");
// wb 写入二进制数据
FILE *fileCopy = fopen(fileCopyName, "wb");
if (!file || !fileCopy) {
printf("文件打开失败,查看文件路径!\n");
exit(0);
}
// 获取文件大小 SEEK_SET(开头) SEEK_CUR(当前) SEEK_END(结尾)
fseek(file, 0, SEEK_END);
// 走到这里之后:file有了更丰富的值,给你的file指针赋值,挪动的记录信息
// 读取 刚刚给file赋值的记录信息
// 其实此函数目的是:计算偏移的位置,ftell 从 0 开始统计到当前(SEEK_END)
long file_size = ftell(file);
printf("%s 文件的字节大小是:%ld\n", fileName, file_size);
// 将文件移动回开头位置
fseek(file, 0, SEEK_SET);
// 定义一个容器
int buffer[10];
// 每次读取的长度,==0 时代表读取完毕
int len;
// fread 参数1:容器,参数2:每次偏移多少 char,参数3:容器大小,参数4:目标文件
while ((len = fread(buffer, sizeof(char), 10, file)) != 0) {
// fwrite 参数1:容器,参数2:每次偏移多少 int,参数3:写入长度,参数4:copy文件
fwrite(buffer, sizeof(char), len, fileCopy);
printf("文件读取的长度 %d\n", len);
}
printf("文件的复制成功!\n");
// 关闭文件
fclose(file);
fclose(fileCopy);
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/8f83ee0b8732580799ae015d61b9361c.png)