博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux下库函数操作之文件复制
阅读量:3782 次
发布时间:2019-05-22

本文共 1499 字,大约阅读时间需要 4 分钟。

知识点补充:

  1. ftell()
    一个参数,文件指针
    功能:获取当前文件指针到开头的字节数
    其他知识点看参考上一篇
#include 
#include
#define BUFFER_SIZE 50int main(int argc,char **argv){ FILE *from_fd ,*to_fd;//文件指针的定义 long len; char buffer[BUFFER_SIZE]; int ret;//记录文件读取的长度 if(argc!=3) { printf("argument is not enough\n"); return -1; } if((from_fd=fopen(argv[1],"a+b"))==NULL)//以追加可读可写的方式打开文件,若文件不存在就新建文件 { printf("file not exist\n"); return -1; } fprintf(from_fd,"hello\n");//为文件写入数据 if((to_fd=fopen(argv[2],"w+b"))==NULL) { printf("file not create\n"); return -1; } //获取要复制的文件长度 fseek(from_fd,0L,SEEK_END);//把文件指针放置在文件的末尾,然后获取文件的长度 len=ftell(from_fd);//获取文件的长度 fseek(from_fd,0L,SEEK_SET);// while(!feof(from_fd))//判断文件指针是否到文件末尾 { //读文件 fread(buffer,BUFFER_SIZE,1,from_fd);//返回一次读取文件的大小 if(bUFFER_SIZE>=len)//若文件长度已经减小至比返回值小,此时已读取完文件 { fwrite(buffer,len,1,to_fd); }else { fwrite(buffer,BUFFER_SIZE,1,to_fd); len-=BUFFER_SIZE;//记录还需复制的文件长度 } bzero(buffer,BUFFER_SIZE);//清空缓冲区的内容 } fclose(from_fd); fclose(to_fd); exit(0);}

编译及运行

//编译gcc File_test.c  -o test //运行./copy_file from.c  to.c

 

 

转载地址:http://rumvn.baihongyu.com/

你可能感兴趣的文章
银行业务队列简单模拟(队列queue)
查看>>
MySql中的数据查询语言(DQL)三:连接查询
查看>>
MySql中的数据查询语言(DQL)五:union和limit
查看>>
数据操作语言(DML)一:插入数据insert、修改数据update、删除delete
查看>>
.properties 文件,.yml 文件 ,yaml文件语法学习
查看>>
jsp 的常用标签
查看>>
Listener 监听器
查看>>
SpringBoot自动配置原理
查看>>
IDEA连接mysql又报错设置时区!Server returns invalid timezone.
查看>>
员工管理系统二:首页和国际化实现
查看>>
员工管理系统四:员工列表实现
查看>>
员工管理系统五:增删改员工实现
查看>>
Redis的安装与卸载
查看>>
项目阶段五:验证码
查看>>
项目阶段五:购物车
查看>>
项目阶段六:订单模块的数据库准备与dao、service层
查看>>
项目阶段六:后台管理的订单模块
查看>>
练习——图书管理系统八(根据图书编号填充图书名称下拉控件和验证手机号)
查看>>
将windows下文件上传至服务器中
查看>>
正则表达式:贪婪模式与懒惰模式
查看>>