用C语言编写代码实现文件的复制,将原文件sour_file中的后半部分数据复制到新文件dest_file中,原文件中的数据可自定义。
时间: 2024-09-23 21:08:16 浏览: 35
在C语言中,你可以使用`fopen`, `fseek`, 和 `fwrite` 函数来实现这个功能。首先,你需要打开源文件和目标文件,然后定位到源文件的末尾,读取剩余的数据,并将其写入目标文件。这里是一个简单的示例:
```c
#include <stdio.h>
#define BUFFER_SIZE 4096 // 字节缓冲区大小
// 定义函数用于复制文件后半部分
void copy_file_part(char *src_file, char *dst_file) {
FILE *src = fopen(src_file, "rb"); // 打开源文件以二进制模式读取
if (src == NULL) {
perror("Failed to open source file");
return;
}
FILE *dst = fopen(dst_file, "wb"); // 打开目标文件以二进制模式写入
if (dst == NULL) {
perror("Failed to open destination file");
fclose(src);
return;
}
// 计算源文件的大小
fseek(src, 0, SEEK_END); // 移动到文件末尾
long int src_len = ftell(src); // 获取当前位置作为长度
rewind(src); // 回滚到文件开头
// 如果源文件为空,无需复制
if (src_len == 0) {
fclose(src);
fclose(dst);
return;
}
// 定位到源文件的后半部分并复制
long int start_copy = src_len / 2; // 开始复制的位置
fseek(src, start_copy, SEEK_SET); // 移动到开始复制的位置
size_t bytes_left = src_len - start_copy;
while (bytes_left > 0 && !feof(src)) { // 当还有内容没读完
size_t bytes_to_read = (bytes_left > BUFFER_SIZE) ? BUFFER_SIZE : bytes_left;
size_t bytes_written = fwrite(src, 1, bytes_to_read, dst);
if (bytes_written != bytes_to_read) {
perror("Error writing to destination file");
fclose(src);
fclose(dst);
break;
}
bytes_left -= bytes_written;
}
fclose(src);
fclose(dst);
printf("File copying completed successfully.\n");
}
int main() {
char sour_file[] = "path/to/source_file"; // 替换为你的源文件路径
char dest_file[] = "path/to/destination_file"; // 替换为你的目标文件路径
copy_file_part(sour_file, dest_file);
return 0;
}
```
阅读全文