标准i/0实现Linux中cp功能

#include <stdio.h>

#include <string.h>

#include <errno.h>

#include< stdlib.h>

#define MAXSIZE 2048


int main(int agrc ,char ** agrv[ ])

{

    FILE *from_fd;              

    FILE * to_fd;

    long file_len ;

    char buffer[MAXSIZE];

    char *ptr;

    if(3!= agrc)                        //当操作数不等于3时报错并提示用法

{

    fprintf(stderr,"%s用法 :源文件 目标文件",agrv[0]);

    exit(1);

}

if((from_fd=fopn(agrv[1],"rb")) ==NULL)            

{

    fprintf(stderr,"打开 %s Error:%s",agrv[1],strerror(errno));  //打开源文件失败报错

    exit(1);

}

if((to_fd=fopen (agrv[2],"wb")) == NULL)

    {

    fprintf(stderr,"打开 %s Error:%s",agrv[2],strerror(errno));   //打开目标文件失败报错

    exit(1);

   }

fseek(from_fd,0L,SEEK_END);                    //测文件长度

file_len=ftell(from_fd);

fseek(from_fd,0L,SEEK_SET);

printf("文件大小 %ld\n",file_len);

while(!feof(from_fd))                //没到文件尾执行循环

{

    fread(buffer,MAXSIZE,1,from_fd);       //读源文件

    if(MAXSIZE>= file_len)             

    {

        printf("一次写完了\n");

        fwrite(buffer,file_len,1,to_fd);

    }

    else

    {

        printf("写了%ld",MAXSIZE);

        fwrite(buffer,MAXSIZE,1,to_fd);

        file_len-=MAXSIZE;

        printf("还剩下%ld",file_len);

        

    }

memset(buffer,0,MAXSIZE);         //将已读文件置零处理,之后执行下次读写

    

}

fflush(to_fd);                     // 将缓存区的中所有未写的数据全部写到文件中

fclose(from_fd);

fclose(to_fd);

exit(0);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值