为什么我看到二进制文件的内容

Why do I see the contents of binary files?

本文关键字:二进制文件 我看 为什么      更新时间:2023-10-16

为什么我可以打开和查看二进制文件。奇怪的外表是不可能的?http://codepad.org/OwX99H0p

  1. 输入字符串str->char arr1[]->FILEOUT.DAT
  2. 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"。当你用文本编辑器打开你创建的文件时,它会试图将这些数据解释为无法给出可读结果的文本。

想象一下,把液体储存在瓶子里。如果你不给它贴标签,没有人知道它是什么。如果你把这种液体倒进你的车里,它会试图把它用作汽油,并可能损坏你的发动机。幸运的是,电脑更宽容。

大多数文件在其标头中存储有关如何解释数据的信息,以便程序可以检查是否支持该文件类型。因此,例如,试图在媒体播放器中打开此文件很可能会告诉您不支持这种格式,而不是试图将数据解释为媒体。

相关文章: