1. 程式人生 > >cp&tar&用c語言編寫程序 實現cp命令的效果

cp&tar&用c語言編寫程序 實現cp命令的效果

none des tdi 文件內容 display 我們 class pan fop

1.cp (拷貝) 已存在文件路徑 要拷貝的文件路徑

實現cp命令的代碼如下:

技術分享圖片
  2 #include <stdio.h>                                                          
  3 
  4 //因為要在命令中得到兩個路徑,所以要用到main函數的兩個參數
  5 int main(int argc,char **argv){
  6 
  7  char buf[100]={0};
  8 
  9 int size=0;
 10 /* int buf[100]={0} ; 代表數組裏的單個存儲區占四個字節。 如果我們從原始文件>    裏拿出來的數據是3個字節,那麽就放不進去
*/ 11 FILE * p_src=NULL,*p_dest=NULL; 12 13 if (argc <3){ 14 printf("格式命令錯誤\n"); 15 return 0; 16 } 17 18 //拷貝的思路1:把原文件讀到內存中,然後在寫入新文件中。原文件可能非常大。 19 //拷貝的思路2:螞蟻搬家 20 p_src=fopen(*(argv+1),"rb"); 21 //argv 代表一個指針數組, 22 //指針數組裏的第一個指針是./out文件,第二個指針是原始文件路徑 23 24 //分支處理打開失敗的情況 25 if
(!p_src){ 26 printf("原始文件打開失敗\n"); 27 return 0; 28 } 29 30 p_dest=fopen(*(argv+2),"wb"); 31 32 if(!p_dest){ 33 printf("新文件打開失敗\n"); 34 fclose("p_src"); 35 p_src=NULL; 36 return 0; 37 } 38 39 while(1){ 40 size=fread(buf,sizeof
(char),100,p_src); 41 if(!size){break;} 42 fwrite(buf,sizeof(char),size,p_dest); 43 } 44 //從原始文件裏拿到多少個數據,就寫多少個數據。 45 fclose("p_dest"); 46 p_dest=NULL; 47 48 fclose("p_src"); 49 p_src=NULL; 50 51 52 return 0; 53 }
View Code

2.tar 命令

使用zcvf選項 打包 (把多個文件打包成一個壓縮文件)。

使用zxvf選項 恢復 (把一個大包壓縮好的文件內容恢復成普通文件)。

錯誤訂正:代碼第22行 應該為./a.out 文件

cp&tar&用c語言編寫程序 實現cp命令的效果