用 fread 和 fgets 读文件
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);
}