文件複製在程序中經常會用到,不過最主要的是對文件的操作。
/*
本程序所實現的功能爲 【**.exe srcFile desFile】 ,就是將srcFile 拷貝一份到desfile,
所以在運行程序時必須在後面添加兩個參數,第一個是已經存在的文件的路徑,另一個是需要
複製到的路徑。
本程序主要是利用文件操作函數中的 fgetc() 函數 與 fputc() 函數。
函數說明:
fgetc(FILE *fp):
從流中讀取一個字符,同時沒取完一個字符fp 指針會自動指向下一個字符。
當讀取錯誤時會返回EOF。可以通過返回值判斷當前文件是否讀完。
fputc(char ch, FILE *fp):
向流中輸入一個字符,與fgetc 相似,在每寫入一個後fp 指向下一個,等待繼續輸入,或者
流關閉
在函數中我們還需要用到 fopen(char * fileName, char *type),第一個參數就是我們所需要的文件路徑,
第二個參數就是讀取的方式。讀取方式如下:
r:只讀方式打開一個文本,只允許讀數據
w:只寫打開或建立一個文本文件,只允許寫數據
a:追加打開一個文本文件,並在文件末尾寫數據
rb:只讀打開一個二進制文件,只讀
wb:只寫打開,或建立一個二進制文件,只允許寫數據
ab:追加打開一個二進制文件,並在文件末尾寫數據
r+:讀寫打開一個文本文件,允許寫和讀
w+:讀寫打開或建立一個文本文件,可以讀和寫
a+:讀寫打開一個文本文件,允許讀,或在文件末尾追加數據
rb+:讀寫打開一個二進制文件,允許讀和寫
wb+:讀寫打開或建立一個二進制文件,允許讀和寫
ab+:讀寫打開一個二進制文件,允許讀,或在文件末尾追加數據
還有第二個函數fclose(FILE *fp) ,也就是關閉文件流,這個很重要
*/
#include<stdio.h>// 在這個頭文件中包含了我們所需要的各個文件操作函數
int main(int argc, char* argv[])
{
FILE *srcFile , *desFile;//定義兩個文件指針
if(argc != 3)// 判斷參數輸入是否滿足要求
{
printf("Please input <%s srcFile desFile>",argv[0]);// 這個地方提示用戶程序執行的正確方式
return 0;
}
srcFile = fopen(argv[1],"rb");//以讀取二進制的方式打開源文件
if(srcFile == NULL)
{
printf("Source file open failure!!");
return 0;
}
desFile = fopen(argv[2],"wb");//以寫入二進制方式打開目標文件
if(desFile == NULL)
{
printf("Destination file open failure!!");
return 0;
}
/* start copy */
while(!feof(srcFile))// 判斷當前指針的指向是否爲EOF
{
putc(getc(srcFile),desFile);
}
fclose(srcFile);
fclose(desFile);
return 0;
}