文件操作中fread和fwrite的介绍和使用,实现创建一个copy(复制任何文件)程序

一、前言

要实现一个copy的程序,得先明白每个文件在内存中是以二进制序列来储存的,恰好C语言提供给我们两个库函数,分别是 fread fwrite,这两个库函数是用来读写二进制文件中的内容,所以刚好可以提供给我们用来写这个copy程序。接下来,先给大家介绍这两个库函数的使用。

二、freadfwrite 的使用

1、fread 的使用

fread 故名思意就是读取 FILE * stream 文件的内容,然后写到 void * ptr 这个地址下面的内存中。

size_t  size 代表的是文件中每个内容的大小,单位是字节,在文件的二进制序列下,每个内容的大小都是一个字节,明白这个对后面使用它来做 copy 程序很有帮助。

size_t count 代表的是把 FILE * stream 中的多少个元素写到 void * ptr 的内存下。

fread 的返回值是一个 size_t 的类型,返回值代表的是从FILE * stream 写入到 void * ptr 内存下的元素个数

2、fwrite 的使用

fwrite 顾名思义就是把 const void * ptr 中的内容写到 FILE * stream 的文件中,我觉得有点和fread 的操作相反。

size_t  size 代表的就是 const void * ptr 内存下的每个元素的字节大小,单位是字节。

size_t  count 代表的就是把 const void * ptr 中多少个元素写到 FILE * stream 文件中,单位也是字节。

fwrite 的返回值也是一个 size_t 的类型,返回值代表的就是 const void * ptr 中写到 FILE * stream 文件中的元素个数。

三、实现copy程序

明白了上面两个库函数的使用方法,大家开始和我一起写这个程序吧!

1、我们先在 vs 下创建一个 test.c 的文件

2、选择一个自己需要复制的文件放到 test.c文件下,操作如下:

当然 每种文件都可以,包括图片,音频,视频...... 然后就可以用刚才学的两个库函数开始写程序了

具体操作方法就是把要复制的文件的内容用 fread 读取出来,放到一个地址的内存下面保存起来,然后再用 fwrite 把保存的地址下的内容写到需要 copy 的文件里面即可操作完成。

操作方法:

1、先打开需要复制的文件,然后再用fopen创建一个需要复制的文件,操作如下:

这里的buffer是一个地址,是用来接收用fread读取的内容,并且放到buffer地址下,之后再用fwritebuffer地址下的内容写到复制的文件里面即可完成文件的复制。

2、用buffer的地址和文件操作中的其他函数一起使用开辟空间

但是buffer只是一个地址,它应该先用malloc开辟内存大小,才可以存放需要复制的文件的内容,但是应该开辟多大的内存,请看下面操作:

不了解fseek,ftell,rewind 函数的同学们如果有需要请私信我或者评论区留言,我可以单独出一期博客告诉大家,今天在这先不做讲解了,重点在copy程序上。

3、读取需要复制的文件的内容,并且写进复制的文件中,操作如下:

运行之后会发现test.c文件下面程序已经帮我们copy好了我们需要复制的内容,结果如下:​​​​​​​

看到这块,我们的copy程序就已经完美的结束了,也不是很难,实操起来会发现很有意思,希望大家下去可以自己试试,如果发现那里不明白,可以私信我或者评论区留言,我来帮大家解答。

还有文件可能打开和之前的不一样,是因为复制的文件是文本类型,其实也很简单,因为咱们复制的是照片,在复制的文本文件后加个后缀即可观察了,例如照片后加一个 .PNG ,如果是视频那就是 .mp4 ,还有其它类型只要加上它的后缀即可查看。复制后结果如下:

结果:

好了 这个复制文件的程序就告诉大家了,看完操作后如果有什么不懂的地方请私信我或者评论区留言,我帮大家解决。

四、共勉

千里之行始于足下!!!在C语言的学习中还有许许多多的知识等着我们去学习,所以大家应该静下心来去学习,最后一定会成为下一个大佬!!!

  • 36
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值