思路步骤:
(1)打开要复制的文件(只读)
(2)打开复制到的目标文件(可读可写,不存在就创建,存在就清空)
(3)定义buf暂存读取的数据
(4)利用fgets循环读取文件,只要读取到了字符,就写入到目标文件中。
注意:需要利用fflush强制刷新缓存区
// 用标准io实现 cp功能
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char const *argv[])
{
if (argc != 3) // 判断是否输入了进行两个操作的文件
{
printf("format:%s <srcfile> <destfile>\n", argv[0]);
return -1;
}
// 打开两个文件
// 第一个文件只读,为被复制文件夹
// 第二个为目标文件夹
FILE *fp1 = fopen(argv[1], "r");
FILE *fp2 = fopen(argv[2], "w+");
// 暂存读取的数据
char buf[100] = "";
// 循环读取文件中的数据
while (fgets(buf, 100, fp1) != NULL)
{
// 向目标文件中写入
fputs(buf, fp2);
// 刷新缓存区
fflush(NULL);
sleep(1);
}
// 关闭文件
fclose(fp1);
fclose(fp2);
return 0;
}