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