-3
왜 바이너리 파일을 열어 볼 수 있습니까? 불가능한 이상한 외모? http://codepad.org/OwX99H0p왜 바이너리 파일의 내용을 볼 수 있습니까?
- 문자열 str을 입력 -> 문자 arr1 [] -> FILEOUT.DAT
- FILEOUT.DAT -> 문자 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;
}
모든 것이 바이트 (또는 char []')에서 C++로 바뀌었기 때문입니다. 'std :: ios :: binary'는 단지 원시 파일을 읽는다. 텍스트 파일에만 의미가있는 번역은하지 않는다. (표준은 실제로 의미를 알 수 없다.) – dhke
_else_ 무엇을 기대 했습니까? 바이너리 파일을 열고 각 바이트를'cout '으로 선택했다. 이 상황에서 또 무슨 일이 일어날까요? –
파일 내용의 이상한 모양은 이진 컴퓨터 코드입니다. 바이너리 파일을 보호하기 위해 콘텐츠를 적용 할 수 없습니다. 하지만 여기 열어 볼 때 정상적으로 볼 수 있습니까? . 내 프로그램이 옳은가 틀린가? –