2012-10-28 3 views
-4

이 코드에 문제가 있습니다.C++의 파일에 결과 저장

내가 코드에서 찾고있는 것은 "first"와 "second"의 결과를 무작위로 얻고 그 결과를 파일에 넣는 것입니다.

파일을 사용하지 않고 실행하면 모든 결과가 좋지만 파일에 결과를 저장하려고하면 (첫 번째, 초) 첫 번째 노드 만 표시됩니다.

#include<iostream> 
#include <fstream> 
#include<cmath> 

using namespace std; 

void main() 
{ 
    int first[100],secnd[100]; 

    for (int i=0; i<100 ;i++) 
    { 
     first[i]=rand()%500; //random number from to 499 
     secnd[i]=rand()%500; //random number from to 499 
     ofstream myfile; 
     myfile.open ("example.txt"); 
     myfile << "Writing this to a file.\n"; 
     myfile <<first[i]<<" "<<secnd[i]; 
     myfile.close(); 
    } 
} 
+2

제목에 문제에 대한 유용한 정보가 없으므로 본문에 'plzzzz help thanxxxx allot'이라고 쓰여 있고 누군가 *가 응답 할 것으로 기대하고 있습니까? –

+2

텍스트가 아닌 영어로 작성하십시오. –

+0

오오 .. 파일 끝을 찾거나 루프 앞에서 파일을 열고 그 후까지 열어 두십시오. –

답변

1

당신은 루프에서 파일을 재개하고 있습니다 : 여기

는 코드입니다. 이 때마다 파일이 0으로 설정되므로 마지막 항목 만 가져옵니다.

1

ofstream의 기본 열린 플래그는 파일을 잘라내 (덮어 쓰기) 있습니다. 루프를 통해 매번 파일을 열고 닫는 중입니다. 파일의 모든 결과를 원하면 루프 외부에서 한 번 열어 루프 후 닫으십시오.

+0

대단히 축하합니다. – user1680877

5

잘못된 위치에서 파일을 여는 중입니다. 루프 앞에 번을 열어을 열고 루프 후 번을 한 번 닫습니다. 이렇게

myfile.open ("example.txt"); 
for (int i=0; i<100 ;i++) 
{ 
    ... 
} 
myfile.close(); 

출력용으로 파일을 열면 현재 파일에있는 내용이 삭제됩니다. 따라서 루프 내부에서 파일을 열면 이전에 작성한 임의의 숫자가 손실됩니다.

+0

그래서 반복 당 파일을 다시 열고 닫는 비효율적 인 작업을 계속할 경우 첫 번째 파일을 제외하고 각 후속 시도마다 파일을 열어야합니다. 그렇지 않으면 파일에 마지막 반복 결과가 포함됩니다. 그러나 그는 파일에 첫 번째 반복 결과 만 포함한다고 생각합니다. –

+0

당신 :) 그 일을 올바르게 – user1680877