linux系统编程---标准I/O操作实现cp命令

   日期:2020-11-06     浏览:109    评论:0    
核心提示:标准I/O函数实现cp命令//通过标准IO操作,实现cp命令#include<stdio.h>#define N 256 //定义个宏,方便以后的修改int main(int argc,const char *argv[]){ char buf[N]={0}; //定义一个存储数据的buf FILE *fOri=NULL; //定义两个文件指针 FILE *fDest=NULL; if(argc<3){ //如果命令行参数少于三个就返回

标准I/O函数实现cp命令

//通过标准IO操作,实现cp命令,可以复制文件,可以复制目录
#include<stdio.h>
#define N 256 //定义个宏,方便以后的修改
FILE *fileopen(const char *filename,const char *mode){ 
    FILE *fp=NULL;
    fp=fopen(filename,mode); //只读的方式打开,需要copy的源文件
    if(fp==NULL){ 
        return NULL;
    }
    return fp;
}
int file_copy_to_file(FILE *fpSrc,FILE *fpDest){ 
    if(NULL==fpSrc||NULL==fpDest){ 
        return -1;
    }
    int ret; //记录读到了字节数
    char buf[N]={ 0}; //定义一个存储数据的buf
    while(1){ 
        ret=fread(buf,sizeof(char),256,fpSrc); //fread可以读取任意类型的数据,二进制数据也可以读取,
                                            //如果不清楚需要copy文件的类型时,把读取的字节设置为一个字符最好
        if(ret==0){ 
            break;
        }
        fwrite(buf,sizeof(char),ret,fpDest);
    }
    return 0;
}
int main(int argc,const char *argv[]){ 
    FILE *fOri=NULL; //定义两个文件指针
    FILE *fDest=NULL;
    if(argc<3){  //如果命令行参数少于三个就返回
        return -1;
    }
    if((fOri=fileopen(argv[1],"r"))==NULL){ 
        return -1;
    }
    if((fDest=fileopen(argv[2],"w"))==NULL){ 
        return -1;
    }
    file_copy_to_file(fOri,fDest);
    fclose(fOri); //copy文件结束需要关闭源文件和目的文件
    fclose(fDest);
    return 0;
}

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服