轉載:https://www.jb51.net/article/147896.htm
實際上就是以二進制形式打開文件,將數據保存到內存,在以二進制形式輸出到指定文件。因此對於有圖片的文件,也可以用這種方法復制其內容
1 #include<iostream> 2 3 using namespace std; 4 5 void main(void) 6 { 7 //保存輸入圖像文件名和輸出圖像文件名 8 char InImgName[10]; 9 char OutImgName[10]; 10 //圖像數據長度 11 int length; 12 //文件指針 13 FILE* fp; 14 //輸入要讀取的圖像名 15 cout << "Enter Image name:"; 16 cin >> InImgName; 17 //以二進制方式打開圖像 18 if ((fp = fopen(InImgName, "rb")) == NULL) 19 { 20 21 cout << "Open image failed!" << endl; 22 exit(0); 23 } 24 //獲取圖像數據總長度 25 fseek(fp, 0, SEEK_END); 26 length = ftell(fp); 27 rewind(fp); 28 //根據圖像數據長度分配內存buffer 29 char* ImgBuffer = (char*)malloc(length* sizeof(char)); 30 //將圖像數據讀入buffer 31 fread(ImgBuffer, length, 1, fp); 32 fclose(fp); 33 //輸入要保存的文件名 34 cout << "Enter the name you wanna to save:"; 35 cin >> OutImgName; 36 //以二進制寫入方式 37 if ((fp = fopen(OutImgName, "wb")) == NULL) 38 { 39 cout << "Open File failed!" << endl; 40 exit(0); 41 } 42 //從buffer中寫數據到fp指向的文件中 43 fwrite(ImgBuffer, length, 1, fp); 44 cout << "Done!" << endl; 45 //關閉文件指針,釋放buffer內存 46 fclose(fp); 47 free(ImgBuffer); 48 }