标准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;
}