c语言实现使用字符串读写实现文件复制(将a.txt中的内容复制到b.txt中)
时间: 2024-10-17 12:13:16 浏览: 18
在C语言中,你可以通过以下步骤来实现文件复制功能,这里是一个简单的示例:
首先,需要包含头文件`stdio.h`,然后定义两个文件指针分别指向源文件和目标文件,并使用`fopen()`函数打开它们。接着,使用`fread()`函数从源文件读取数据,直到读取完毕。最后,关闭文件并再次使用`fopen()`和`fwrite()`函数将数据写入目标文件。
```c
#include <stdio.h>
#include <string.h>
int main() {
char src[] = "a.txt";
char dest[] = "b.txt";
// 打开源文件和目标文件
FILE* src_file = fopen(src, "rb");
if (src_file == NULL) {
printf("Failed to open source file.\n");
return 1;
}
FILE* dest_file = fopen(dest, "wb");
if (dest_file == NULL) {
printf("Failed to open destination file.\n");
fclose(src_file);
return 1;
}
// 定义临时缓冲区用于存储读取的数据
size_t buffer_size = 1024; // 可根据需要调整大小
char buffer[buffer_size];
// 使用while循环读取源文件并写入目标文件
while (fgets(buffer, buffer_size, src_file)) {
fwrite(buffer, sizeof(char), strlen(buffer), dest_file); // 注意strlen(buffer)而不是sizeof(buffer)
}
// 清理并检查文件是否完全写入
rewind(src_file); // 将源文件指针移至开头
size_t total_read = fread(buffer, buffer_size, 1, src_file);
fseek(src_file, 0L, SEEK_END); // 移动到文件结束
size_t total_bytes = ftell(src_file);
if (total_read != total_bytes || feof(src_file)) {
printf("Copy failed: read %zd bytes from source but wrote only %zd\n", total_read, total_bytes);
} else {
printf("File copied successfully.\n");
}
// 关闭文件
fclose(src_file);
fclose(dest_file);
return 0;
}
```
阅读全文