为什么我看到二进制文件的内容
Why do I see the contents of binary files?
为什么我可以打开和查看二进制文件。奇怪的外表是不可能的?http://codepad.org/OwX99H0p
- 输入字符串str->char arr1[]->FILEOUT.DAT
- FILEOUT.DAT->char arr2[]->打印屏幕
有问题的代码:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
void NhapMang(char *&arr, string str , int &n)
{
n = str.length();
arr = new char[n];
for (int i = 0; i < n;i++)
{
arr[i] = str[i];
}
}
void XuatMang(char *arr, int n)
{
for (int i = 0; i < n;i++)
{
cout << arr[i];
}
}
void GhiFile(ofstream &FileOut, char *arr, int n)
{
FileOut.open("OUTPUT.DAT", ios::out | ios::binary);
FileOut.write(arr, n*sizeof(char));
FileOut.close();
}
void DocFile(ifstream &FileInt, char *&arr, int n)
{
FileInt.open("OUTPUT.DAT", ios::in | ios::binary);
arr = new char[n];
FileInt.read(arr, n*sizeof(char));
FileInt.close();
}
int main()
{
char *arr1;
int n1;
fflush(stdin);
string str;
getline(cin, str);
NhapMang(arr1, str,n1);
ofstream FileOut;
GhiFile(FileOut, arr1, n1);
char *arr2;
int n2 = n1;
ifstream FileInt;
DocFile(FileInt, arr2, n2);
XuatMang(arr2, n2);
delete[] arr1;
delete[] arr2;
system("pause");
return 0;
}
您最终将数据存储在一个文件中。这些数据代表什么取决于您,请记住,最终都是"1"answers"0"。当你用文本编辑器打开你创建的文件时,它会试图将这些数据解释为无法给出可读结果的文本。
想象一下,把液体储存在瓶子里。如果你不给它贴标签,没有人知道它是什么。如果你把这种液体倒进你的车里,它会试图把它用作汽油,并可能损坏你的发动机。幸运的是,电脑更宽容。
大多数文件在其标头中存储有关如何解释数据的信息,以便程序可以检查是否支持该文件类型。因此,例如,试图在媒体播放器中打开此文件很可能会告诉您不支持这种格式,而不是试图将数据解释为媒体。
相关文章:
- 我的 SDL2 程序需要哪些二进制文件,以便它在另一台未安装 SDL2 的计算机中工作
- 为什么我无法将浮点值和整数值写入二进制文件 c++?
- 当我在支持 avx2 的机器上编译并在另一台仅支持 avx 的机器上运行二进制文件时会发生什么?
- 我有一个预处理的 C/C++ 源文件 (cacti.i).如何从这个 .i 文件生成可执行二进制文件,以便我可以像 ./
- C++中的类/函数模板占用了我的二进制文件的百分比是多少?
- 从二进制文件加载列表后,我的代码似乎进入了无限循环
- 如何在我的进程中运行的二进制文件中注册操作和内核
- g++ 编译:我可以链接到带有符号链接二进制文件的目录吗?
- 我正在尝试读取一个包含字符串和整数的二进制文件..并打印出与字符串对应的整数
- C ++,当我读取二进制文件时,我得到重复的信息
- 在线C++编译器:为我输出二进制文件
- 从二进制文件中抓取文本时,为什么 xdg_vtnr=8 是我的结果
- 我怎么知道我是在读二进制文件还是文本文件
- 无法从我的二进制文件访问远程服务器中的数据库
- 从二进制文件读取会让我违反访问
- 我无法复制整个二进制文件
- 我可以提供我的程序的linux二进制文件与我的系统的共享库吗?
- 我如何编译peercoin生成windows二进制文件
- 如果我用较新版本的gcc编译二进制文件,我如何找到需要在客户机linux机器上安装的库?
- 自动输入到我无法修改的二进制文件