IO学习系列之使用fread和fwrite复制文件内容

  • fread函数:
  • 功能:从文件中读取 nmemb 项数据,其中每项数据size个字节,并存放到指针ptr;
  • 具体内容:
c 复制代码
#include <stdio.h>

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
/*
参数:

    	ptr:	用来保存读取的数据的首地址
    	
    	size:	每一项的大小
    	
    	nmemb:	项目的个数
    	
    	stream:文件指针
    	
返回值:

    	成功 	实际读取的项目数  
    			只有当size==1时 返回的才是字节数
    			
    	失败 	小于项目的个数
*/
  • fwrite函数:
  • 功能:向文件中写入 nmemb 项数据,其中每项数据size个字节;
  • 具体内容:
c 复制代码
#include <stdio.h>

size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
/*
参数:

    	ptr:	要写入的数据的首地址
    	
    	size:	每一项的大小
    	
    	nmemb:	项目的个数
    	
    	stream:文件指针
    	
返回值:

    	成功 	实际写入的项目数  
    			只有当size==1时 返回的才是字节数
    			
    	失败 	小于项目的个数
*/
  • 示例代码:
c 复制代码
#include <stdio.h>


int main(int argc, const char *argv[]){
    
    if(3 != argc){

        printf("Usage : %s src_file dest_file\n",argv[0]);

        return -1;


    }

    FILE *fd1 = fopen(argv[1],"r");
    if(NULL == fd1)
    {
        perror("fopen error");
        return -1;
    }

    FILE *fd2 = fopen(argv[2],"w");
    if(NULL == fd2)
    {
        perror("fopen error");
        return -1;
    }

    int ret = 0;

    char buff[128] = {0};

    while(!(feof(fd1) || ferror(fd1))){

        ret = fread(buff,1,sizeof(buff),fd1);

        fwrite(buff,1,ret,fd2);

    }

    fclose(fd1);

    fclose(fd2);
    
    return 0;
}
相关推荐
飞Link1 小时前
什么是 PX4?一文了解 PX4 在空地协同中的作用
算法·无人机
whyutianict_vv1 小时前
云计算 HCIE 认证体系解析:HCIA/HCIP/HCIE 三级科目与知识边界
linux·运维·云计算
一去不复返的通信er7 小时前
力扣-图论-岛屿数量
算法·leetcode·图论
0+1118 小时前
Linux --从 poll 到 epoll多路转接
linux·服务器·1024程序员节
行思理8 小时前
go语言学习难度及适合学习的人群
开发语言·学习·golang
青瓦梦滋8 小时前
WebSocket协议
linux·服务器·网络·c++·websocket·网络协议·http
程序 代码狂人10 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
HDU-Dade11 小时前
【校招笔试真题】简要介绍 Self-Attention 的前沿算法
人工智能·算法
2601_9498477511 小时前
bcrypt.js 跨端三方库仓颉适配全流程
linux·运维·ubuntu
m0_6399069411 小时前
Linux 操作系统入门:目录结构、服务排查常用命令、Shell 脚本基础
linux·运维·后端