이번이 처음입니다. 저는 Gaddis의 책 "C++로 시작하기"에서 C++을 배우고 있습니다. 그러므로 누가 물어야할지 모르겠다. 그러면 나는이 웹 사이트를 발견했다. 당신이 나를 도우 려하지 않기를 바라며, 나는 당신에게서 많은 것을 배울 것입니다.출력에 어떤 문제가 있습니까?
쓰기 arrayToFile라는 함수 :
다음은이 책에서 한 문제입니다. 이 함수는 세 개의 인수를 받아 들여야합니다 : le의 이름, int 배열에 대한 포인터 및 배열의 크기. 함수는 이진 모드에서 지정된 파일을 열고 배열의 내용을 파일에 쓰고 파일을 닫아야합니다. fileToArray라는 다른 함수를 작성하십시오. 이 함수는 세 개의 인수를 받아 들여야합니다 : le의 이름, int 배열의 포인터, 배열의 크기. 함수는 지정된 형식을 이진 모드로 열어 내용을 배열 에서 읽은 다음 파일을 닫아야합니다. arrayToFile 함수를 사용하여 배열에 파일을 쓰고 fileToArray 함수를 사용하여 동일한 파일의 데이터를 으로 읽음으로써 이러한 함수를 설명하는 전체 프로그램을 작성하십시오. 파일에서 데이터를 읽어 어레이에 넣은 다음 화면에 배열 내용을 으로 표시합니다. 여기
그리고
내 코드입니다 :# include <iostream>
# include <string>
# include <fstream>
using namespace std;
const int SIZE = 10;
bool arrayToFile(fstream&, int*, int);
bool fileToArray(fstream&, int*, int);
int main()
{
int arr[SIZE] = { 10, 8, 9, 7, 6, 4, 5, 3, 2, 1 },
arrTest[SIZE];
fstream file;
if (arrayToFile(file, arr, SIZE))
{
if (fileToArray(file, arr, SIZE))
{
for (int n = 0; n < SIZE; n++)
{
cout << arrTest[n] << " ";
}
cout << endl;
return 0;
}
}
return 1;
}
bool fileToArray(fstream &file, int* a, int size)
{
file.open("t.dat", ios::in | ios::binary);
if (!file)
{
cout << "Can't open file t.dat\n";
return false;
}
file.read((char*)a, size);
file.close();
return true;
}
bool arrayToFile(fstream &file, int* a, int size)
{
file.open("t.dat", ios::out | ios::binary);
if (!file)
{
cout << "Can't open file t.dat\n";
return false;
}
file.write((char*)a, size);
file.close();
return true;
}
그리고 여기에 출력됩니다 : -858993460 -858993460 -858993460 -858993460 -858993460 -858993460 -858993460 -85 8,993,460 -858993460 -858993460
출력이 다음과 같이되어 있기 때문에 나는 무엇이 잘못되었는지 알지 못합니다. 10 8 9 7 6 4 5 3 2 1
당신의 도움에 감사드립니다.
-858993460 = 0xCCCCCCCCCC는 특수한 Microsoft 디버그 코드입니다. 초기화되지 않은 스택 메모리를 의미합니다. http://stackoverflow.com/a/127404/487892. arrTest를 초기화하지 않은 코드를 살펴보십시오. – drescherjm
'read'와'write'에 대한 문서를 읽어 들여 각각의 인수가 전달한 것에주의를 기울이십시오. 그런 다음 실제로 어떻게 사용하고 있는지 살펴보십시오. –
당신은 arr에있는 것과 비교 했습니까? –