如何复制文件内容效率最高?大家都来讨论一下,为我提供方案。

banzhiyu 2009-02-13 12:45:08
我现在想复制一个文件内容到新的文件。大概有两种想法:
(1)申请1024缓冲区,用fgets读取,用puts函数写。
(2)申请足够大的缓冲区,用fgetc全部读取到缓冲区中,然后fwrite一起写进新的文件中。
我现在不知道fgets和fgetc函数的效率差多少?是不是fgets的原理是通过调用fgetc来实现呢?如果这样的话第二种仿佛效率更高。
如果fgets的实现不是通过调用fgetc的话,我不知道效率会相差多少?请大家指正,并且提供新的方案。
...全文
211 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
waizqfor 2009-02-13
  • 打赏
  • 举报
回复
[Quote=引用楼主 banzhiyu 的帖子:]
我现在想复制一个文件内容到新的文件。大概有两种想法:
(1)申请1024缓冲区,用fgets读取,用puts函数写。
(2)申请足够大的缓冲区,用fgetc全部读取到缓冲区中,然后fwrite一起写进新的文件中。
我现在不知道fgets和fgetc函数的效率差多少?是不是fgets的原理是通过调用fgetc来实现呢?如果这样的话第二种仿佛效率更高。
如果fgets的实现不是通过调用fgetc的话,我不知道效率会相差多少?请大家指正,并且提供新的方…
[/Quote]
既然是考虑文件很大的话 那就直接映射文件处理吧 效率应该比你这样快
http://blog.csdn.net/huangxiaoke2000/archive/2006/08/04/1017968.aspxLZ了解一下
banzhiyu 2009-02-13
  • 打赏
  • 举报
回复
两个不都是系统函数吗?您指的系统函数是什么?
baihacker 2009-02-13
  • 打赏
  • 举报
回复
用系统带的东西复制.
waizqfor 2009-02-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 joneshong 的回复:]
最多几mb的数据没有什么太多考虑效率的价值,用fread读,fwrite写,各调用一次就搞定了
[/Quote]
要是文件小的话 效率就查不多了 无所谓用什么了
用fread读,fwrite写 就可以了
VirGhost 2009-02-13
  • 打赏
  • 举报
回复
fgetc()和fgets()都调用了一个读取单个字符的内部函数,基本相当于fgets()是通过不断调用fgetc()实现的。
但如果自己用fgetc()来实现fgets(),每调用一次fgetc()都要lock/unlock一次文件流,但如果调用fgets()只用lock/unlock一次,所以应该是fgets()效率略高。
可以查看这两个函数的代码,以上仅是粗略的分析。
joneshong 2009-02-13
  • 打赏
  • 举报
回复
最多几mb的数据没有什么太多考虑效率的价值,用fread读,fwrite写,各调用一次就搞定了
baihacker 2009-02-13
  • 打赏
  • 举报
回复
(1)申请1024缓冲区,用fgets读取,用puts函数写。
(2)申请足够大的缓冲区,用fgetc全部读取到缓冲区中,然后fwrite一起写进新的文件中。

1.应该是错的
2.fread和fwrite
banzhiyu 2009-02-13
  • 打赏
  • 举报
回复
文件不是很大,应该在kb级别,最多MB,还有什么高效的算法吗? 或者大家帮我比较一下fgetc和fgets的效率有多大差别?

非常感谢楼上提供的链接。
baihacker 2009-02-13
  • 打赏
  • 举报
回复
shell系列函数看看...

再不然直接system("copy ...");

69,372

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧