c++ 以二進制方式讀取文件


轉載: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 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM