复制文件是一种常见功能,需要创建一段代码来复制文件,以便用户输入要复制的文件和新创建的文件。可复制的文件包括文本文件和二进制文件,还可以复制1G的电影或复制1Byte的txt文档。

复制文件的主要想法是打开从原始文件继续将内容读取到缓冲区的缓冲区,每次读取完成后将缓冲区的内容写入新创建的文件,直到读取原始文件的内容为止。

以下是需要解决的两个主要问题。

1)打开多少个缓冲区是恰当的?缓冲区太小会增加读取和写入次数,过大不会显着提高效率。当前,大多数磁盘扇区与4K对齐,如果读写数据不是4K的整数倍,则跨扇区读取,从而效率降低,因此保持4K的缓冲区打开。

2)缓冲区中的数据没有结束标志,如果缓冲区不满意,如何确定记录的字节数?最好的方法是每次读取时返回读取的字节数。

Fread()的基本体如下:

Size _ t fread (void * ptr,size _ t size,size _ t count,file * FP);

返回小于Count的读取和写入成功的块数。Size参数等于1将返回读取的字节数。

注意:fopen()必须以二进制格式打开文件,不能以文本形式打开。否则,系统会稍微处理文件,如果文件是文本文件。像txt等。在txt等情况下,这可能没有问题。mp4,rmvb,其他格式的文件(如jpg)在复制后出错,无法读取。

代码实现:

1.#include

2.#include

3.

4.int copyfile (char * file read,char * file write);

5.

6.int main()' ~

7.char file read[100];//要复制的文件名

8.char file write[100];//复制的文件名

9.

10.//获取用户输入

11.printf(“要复制的文件:”);

12.scanf(“% s”,file read);

13.printf(“将文件复制到:”);

14.scanf(“% s”,fileWrite);

15.

16.//执行复制操作

17.if (copyfile(读取文件,写入文件)

18.printf('恭喜,文件复制成功!\ n ');

19.}else{}

20.无法复制文件“printf(”!\ n ');

21.执行以下操作

22.

23.return 0;

24.执行以下操作

25.

26./**

27.*文件复制函数

28.* @param fileRead要复制的文件

29.* @param fileWrite复制后文件的保存路径

30.* @ return int 1:复制成功。23360复制失败

31.**/

32.int copyfile (char * file read,char * file write) {

33.FILE * fpRead//指向要复制的文件

34.FILE * fpWrite//指向复制的文件

35.int buffelen=1024 * 4;//缓冲区长度

36 . char * buffer=(char *)malloc(buffelen);//打开缓存

Int read count//实际读取的字节数

38.

39.if ((FP read=fopen (file read,' Rb '))=null | |(FP write=fopen(file write,' WB '))

40.printf ('cannot open file,press any key to exit!\ n ');

41.getch();

exit(1);

43.}

44.

45.//继续从fileRead读取内容,将其放入缓冲区,然后将缓冲区的内容写入fileWrite

46.while ((readcount=fread (buffer,1,buffelen,FP read)) 0)、

47.fwrite (buffer,read count,1,FP write);

48.执行以下操作

49.

50.free(缓冲区);

51.f close(f pread);

52.f close(FP write);

53.

54.return 1;

55.}

运行结果:

要复制的文件:d://1.mp4

文件复制到:d://2.mp4

祝贺你。文件复制成功!

如果文件不存在,则显示提示并退出程序。

要复制的文件:d://123.mp4

将文件复制到:d://333.mp4

d ://c yuyan . txt : no such file or directory

第46行是文件复制的核心代码。每次通过Fread()函数从fileRead文件读取bufferLen字节时,都将缓冲区放入缓冲区,然后通过fwrite()函数将缓冲区的内容写入fileWrite文件。

通常每次读取buffelen字节。即readCount=bufferLen;如果文件大小不足buffelen字节,或者读取到文件结尾,则实际读取的字节将小于buffelen,即readCount

c语言中文网vip所有资料,C语言中文网vip教程11.9相关推荐

  1. c语言中英语部分,C语言部分函数(国外英语资料).doc

    C语言部分函数(国外英语资料) 级卖淆铸躁娃罚焉郝蚊秋绞悸扔隘活绿劝伞鸽单模汐傲息累嗣镣樱粕臼骤闽蜂玲瞎饵赣骄蚀净巍瓦氮杯黑灵零崇朋曰冤腑娩吊抵韭敞塌邦熄思啦涯叛伦详户具馅啡汁邹龚肆艾弯仇芹胜缉盾琳县 ...

  2. c语言英语库txt,c语言库函数(国外英语资料).doc

    c语言库函数(国外英语资料) c语言库函数(国外英语资料) 最佳答案 int isalpha (int ch) 若ch是字母 (a - z, a - z) 返回非0值, 否则返回0 int isaln ...

  3. 学习go语言国内最全资料链接

    就最近和各位大佬认识下来,以前觉得学习go语言,可能资料比较少,可是后来才发现,原来资料并不少,甚至可以说通过大家的努力,go社区已经非常包容且完善了 接下来会推荐一些资料,以及大佬 就最近和各位大佬 ...

  4. c语言判断s1是否大于s2,C语言程序设计_复习资料一.doc

    C语言程序设计_复习资料一 -- <程序设计基础> 院(系) 班级 学号 姓名 试卷卷面成绩占课程考核成绩 %平时 成绩占 %课程考核成绩题号一二三四五六七八九十小计得分 得 分一.单项选 ...

  5. c语言英文字符转数字,C语言常用数字和字符串转换函数(国外英文资料).doc

    C语言常用数字和字符串转换函数(国外英文资料) C语言常用数字和字符串转换函数(国外英文资料) C language commonly used Numbers and string conversi ...

  6. c语言各个英文的作用,C语言最重要的知识点复习资料(国外英文资料).doc

    C语言最重要的知识点复习资料(国外英文资料) C语言最重要的知识点复习资料(国外英文资料) The log Share the next list of return logs in the hidd ...

  7. c语言期末考试复习题,C语言期末考试复习资料 计算机等级考试复习题目

    C语言期末考试复习资料 计算机等级考试复习题目 国二国三资料题目 1 C 语言复习题 @复刻回忆 新浪微博账号:http://doc.xuehai.net/panhe14 个人主页 http://do ...

  8. c语言程序设计单项选择题,1.奥鹏南开《C语言程序设计》复习资料单项选择题答案及解析...

    奥鹏南开<C语言程序设计>复习资料答案及解析单项选择部分 [1.1]以下不正确的C语言标识符是. A) int B) a_1_2 C) ab1exe D) _x [A]int是关键字,标识 ...

  9. c语言程序设计备考,《C语言程序设计》复习资料.doc

    <C语言程序设计>复习资料<C语言程序设计>复习资料.doc 第 PAGE 7 页 共 NUMPAGES 7 页1.概念:1.若x和n均是int型变量,且它们的初值均为5,计算 ...

  10. [渝粤教育] 东北大学 现代科学运算—MATLAB语言与应用 参考 资料

    教育 -现代科学运算-MATLAB语言与应用-章节资料考试资料-东北大学[] 01-01 本课程的主要内容 1.[判断题] A.正确 B.错误 参考资料[ ] 2.[判断题] A.正确 B.错误 参考 ...

最新文章

  1. 开机logo切换逻辑深入研究
  2. endnote 参考文献加序号_Endnote教程|页码缩写
  3. [Cake] 0.C#Make自动化构建-简介
  4. 关得紧紧的 FreeEIM飞鸽传书
  5. PHP加速 eAccelerator配置和使用指南
  6. pyechart图像示例与细节修改资料
  7. C语言字符型数据scanf,scanf()函数如何输入字符型数据?
  8. 常用的做网站软件、网站制作软件分享
  9. linux编辑乱码华为光猫,华为光猫修改双模、SN序号、MAC地址方法
  10. 揭开股票量化投资策略的神秘面纱
  11. 如何做云班课上的计算机作业,云班课不分组怎么提交作业
  12. 全局设置webView 的 userAgent
  13. 机器学习和深度学习训练常见问题
  14. 2022第十四届环泰山T60线上大徒步活动线下启动仪式圆满结束
  15. 常见字母组合发音规律
  16. 2021年氧化工艺新版试题及氧化工艺复审考试
  17. 5家同日在港股上市4家破发:有公司获500倍认购,康圣环球等惨烈
  18. html5 video视频标签
  19. MT25QU128 (flash) 简介
  20. Android 5.1双卡打电话发短信的实际应用

热门文章

  1. 华为NP课程笔记10-BGP案例讲解
  2. Windows XP系统文件一一诠释(1)[最新整理](转BY wang6610----BBS.WUYOU.COM)
  3. C# Winform开发教程
  4. 软考资料(系统集成管理工程师)无偿分享
  5. 这一年,这些书:2021年读书笔记
  6. Linux文件系统详解
  7. 大数据导论答案_2020年智慧树APP大数据导论第一单元章节测试网课答案大学课后答案...
  8. hi3798mv300救砖包_迪优美特V26_hi3798mv300线刷固件升级包纯净系统
  9. 奥维地图(OMAP)中坐标为什么有偏移?如何基于WGS84或GCJ02的经纬度坐标生成kml?怎么导出图上一个标签点的WGS84经纬度坐标?
  10. 如何隐藏条形码的数据