C语言学习之:文件读写 fread 和 fgets 的区别;如何用 fread + fwrite完成图片的复制

用 fread 和 fgets 读文件

参考:
https://www.cnblogs.com/edan/p/10070913.html#:~:text=%E4%B8%A4%E4%B8%AA%E5%87%BD%E6%95%B0%E9%83%BD%E6%98%AF,%E5%AE%8C%E6%89%80%E6%9C%89%E7%9A%84%E6%96%87%E4%BB%B6%E5%86%85%E5%AE%B9%E3%80%82

https://blog.csdn.net/weixin_40763897/article/details/88997101

//一、fread的使用

FILE *fp;
int nread;
char buf[4096];
fp = fopen("/text.txt","rb");
nread = fread(buf,1,4096,fp);//读取文件中的所有内容,包括换行符
printf("%s",buf);

//二、fgets的使用(假设不关闭上面的文件,清空内存,重新用 fgets 读取一次)
memset(buf,0,sizeof(buf));
rewind(fp);//将文件指针回到头部,否则读到内容为空
while(fgets(buf,496,fp)!= NULL)  //每次读取一行内容
{
      printf("%s",buf) ;
}fclose(fp);
  • fread 是通过调用一次 fread 方法,将文件中的所有内容读出来;
  • fgets 则是采用循环的方式,每次读文件中的一行。
  • 所以使用 fgets 的时候每个循环中都会将 buffer 中的内容覆盖,因此如果想把文件内容连起来需要重新设定另外一个 buffer

fread 读图片 + fwrite 写图片 完成图片复制

参考:
https://www.cnblogs.com/jianmoxiansheng-Guo/p/12906309.html

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BYTE unsigned char
int main(){
    BYTE *buffer;

    FILE *pixmap = fopen("./temp.png","rb");

    fseek(pixmap,0, SEEK_END);


    int length = ftell(pixmap);//读取图片的大小长度
    FILE *fp = fopen("./t.png","wb");

    buffer = (BYTE *)malloc(length*sizeof(BYTE));

    fseek(pixmap, 0, SEEK_SET);//把光标设置到文件的开头

    while(0 !=fread(buffer,sizeof(BYTE),length,pixmap))
    {
            printf("%s\n----%ld",buffer,strlen(buffer));
            fwrite(buffer,sizeof(BYTE),length,fp);
    }

    fclose(pixmap);
    fclose(fp);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暖仔会飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值