#include <stdio.h>
#include <sys/ioctl.h>
#include <string.h>
int main(int argc, char const *argv[])
{
FILE *fd_old;
FILE *fd_new;
long offset_1;
long offset_2;
char buf[1024];
fd_old = fopen(argv[1],"r+");//打开文件
fd_new = fopen(argv[2],"w+");
//打开文件,如果没有就创建文件
if (fd_old == NULL || fd_new == NULL)
{
perror("error");
return 0;
}
while(1)
{
memset(buf,0,sizeof(buf));//清空缓存数组
offset_1 = ftell(fd_old);//获取文件偏移量
if(fread(buf,1023,1,fd_old)<1)//如果读取数据块小于一块
{
if(feof(fd_old))//文件到了末尾
{
offset_2 = ftell(fd_old);//获取文件末尾的偏移量
fwrite(buf,offset_2-offset_1,1,fd_new);
//写入文件最后小于一个数据块的数据
break;
}
}
else
{
fwrite(buf,1023,1,fd_new);
//如果文件获得的数据大于一个数据块,就直接写入
}
}
fclose(fd_old);//关闭文件
fclose(fd_new);
return 0;
}