本篇的练习与之前的 “用 fgets() 和 fputs() 实现文件的复制” 思路基本一致,参考上篇
#include <stdio.h>
int main(int argc, char *argv[])//argc:命令行参数的个数 argv:指针数组,存命令行参数的字符串
{
if(argc != 3)//输入三个命令行参数
{
printf("Usage: %s <src_filename> <dst_filename>\n", argv[0]);//<src_filename>:源文件名 <dst_filename>:目标文件名
return -1;
}
FILE *fp1 = fopen(argv[1], "r+");//第一个文件只需要读取
if(NULL == fp1)
{
perror("open");
return -1;
}
FILE *fp2 = fopen(argv[2], "w+");//第二个文件写入,如果不存在就创建
if(NULL == fp1)
{
perror("open");
return -1;
}
int ret;
char buf[64] = {0};
while((ret = fread(buf, sizeof(char), 1, fp1) != 0))//从第一个文件读取,通过fp1读取到字符,赋给ch
{
fwrite(buf, sizeof(char), 1, fp2);//把读到的字符写到fp2文件中
}
return 0;
}
1.txt文件内容:
hello
hello
hello
hello
运行:
gcc file_cp_fread.c
./a.out 1.txt 2.txt //如果2.txt不存在则创建,如果存在则清空内容并复制拷贝1.txt文件的内容
结果:
cat 2.txt:
hello
hello
hello
hello