系统编程之文件编程file_cp

#include <string.h>
#include <strings.h>
#include <stdio.h>
#include <stdlib.h>
#define BUFFER_SIZE 1024
int main(int argc, char ** argv)
{
    FILE *from_fd;
    FILE *to_fd;
    long file_len=0;
    char buffer[BUFFER_SIZE];
   // char *ptr;
     /*判断入参*/
     if(argc!=3)
     {
         printf("Usage:%s fromfile tofile\n",argv[0]);
         exit(1);
     }
     /*打开源文件*/
     if((from_fd=fopen(argv[1],"rb"))==NULL)
      {
         printf("Open %s Error\n",argv[1]);
         exit(1);
     }
     /*创建目的文件
*  w      Truncate  file  to zero length or create text file for writing.
              The stream is positioned at the beginning of the file.
*/
     if((to_fd=fopen(argv[2],"wb"))==NULL)
     {
         printf("Open %s Error\n",argv[2]);
         exit(1);
     }
     /*测得文件大小*/
     fseek(from_fd,0L,SEEK_END);
     file_len=ftell(from_fd);
     fseek(from_fd,0L,SEEK_SET);
     printf("from fiel size id %d\n",file_len);
      /*进行文件拷贝*/
             while(!feof(from_fd))
      {
                 fread(buffer,BUFFER_SIZE,1,from_fd);
                 if(BUFFER_SIZE >= file_len) //文件太小
                 {
                     fwrite(buffer,file_len,1,to_fd);
                 }
                 else                       //文件太大
                 {
                     fwrite(buffer,BUFFER_SIZE,1,to_fd);
                     file_len-=BUFFER_SIZE;
                 }
                 bzero(buffer,BUFFER_SIZE);
       }
       fclose(from_fd);
       fclose(to_fd);
       exit(0);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值