为什么我可以打开并查看二进制文件。奇怪的外表是不可能的? http://codepad.org/OwX99H0p
有问题的代码:
#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;
}
答案 0 :(得分:0)
您最终将数据存储在文件中。这些数据代表什么取决于你,请记住,它最终都是'1'和'0'。当您打开使用文本编辑器创建的文件时,它会尝试将此数据解释为不会产生可读结果的文本。
想象一下,将液体存放在瓶子里。如果你没有标记它,没有人知道它是什么。如果你将这种液体倒入汽车中,它会尝试将其用作汽油,并可能会破坏你的发动机。幸运的是,计算机更加宽容。
大多数文件存储有关如何在其标题中解释数据的信息,以便程序可以检查是否支持文件类型。因此,尝试在媒体播放器中打开此文件很可能会告诉您不支持此格式,而不是尝试将数据解释为媒体。