標準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;
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/203248.html
標籤:其他
