C语言编写一个程序,用标准IO提供的函数接口,实现文件的拷贝。 比如:./mycp srcfile destfile 就是把文件srcfile拷贝一份为destfile
时间: 2024-09-26 21:03:16 浏览: 89
在C语言中,我们可以使用`fopen()`, `fclose()`, `fread()`, 和 `fwrite()` 等标准输入输出函数来实现文件的拷贝。这里是一个简单的示例程序,它接受两个命令行参数,源文件名(srcfile)和目标文件名(destfile),然后复制文件内容:
```c
#include <stdio.h>
#include <stdlib.h>
// 检查文件是否成功打开
int check_file(char *filename, char mode) {
FILE *fp = fopen(filename, mode);
if (!fp) {
perror("Error opening file");
return -1;
}
fclose(fp);
return 0;
}
void copy_file(char *src, char *dst) {
// 打开源文件
int src_result = check_file(src, "rb");
if (src_result == -1) return;
// 打开目标文件
int dst_result = check_file(dst, "wb");
if (dst_result == -1) {
fclose(fopen(src, "rb")); // 关闭已打开的源文件
return;
}
// 读取并写入源文件内容
size_t buffer_size = 1024; // 字节块大小
char buffer[buffer_size];
while (!feof(src)) {
size_t bytes_read = fread(buffer, 1, buffer_size, fopen(src, "rb"));
fwrite(buffer, 1, bytes_read, fopen(dst, "wb"));
}
// 关闭所有文件
fclose(fopen(src, "rb"));
fclose(fopen(dst, "wb"));
// 如果任何时候出错,需要清理打开的文件
if (src_result != 0 || dst_result != 0) {
perror("Error copying file");
}
}
int main(int argc, char *argv[]) {
if (argc != 3) {
printf("Usage: %s srcfile destfile\n", argv[0]);
return 1;
}
char *src = argv[1];
char *dst = argv[2];
copy_file(src, dst);
printf("File copied successfully.\n");
return 0;
}
```
运行这个程序时,确保在命令行提供正确的源文件和目标文件路径,如`./mycp source.txt destination.txt`。
阅读全文
相关推荐

















