2010-12-02 5 views
0

아래의 프로그램이 파일의 정수의 무리에 읽어야을 값을 읽고 평균을 해결하지 못하면 :는 파일에서

#include "stdafx.h" 
#include <iostream> 
#include <string> 
#include <fstream> 
using namespace std; 

int main(int argc, char** argv) 
{ 
    ifstream fin("mydata.txt"); 
    int i, value, sum = 0; 

    for (i = 0; fin >> value; i++) 
    { 
     sum += value; 
    } 

    if (i > 0) 
    { 
     ofstream fout("average.txt"); 
     fout << "Average: " << (sum/i) << endl; 
    } 
    else 
    { 
     cerr << "No list to average!" << endl; 
    } 

system("PAUSE"); 

} 

파일 mydata.txt은 같은 디렉토리에 존재하고 1 2 3 4 5하지만 출력이 포함 항상 : No list to average!

항상 계산과 출력 파일 생성 부분을 건너 뛸 수있는 잘못은 무엇입니까? 당신의 도움에 대한

감사합니다,

H

+1

무슨 디렉토리입니까? 소스 파일에서와 마찬가지로? 또는 빌드 된 실행 파일과 동일하게 ?? 그것은 리눅스에서 나를 위해 잘 작동합니다. – Muggen

+1

'fin.is_open()'을 호출하여 파일이 제대로 열 었는지 확인하십시오. – detunized

답변

1

나는 mydata.txt가 실행 파일과 같은 디렉토리에 없다고 생각합니다. 코드는 저에게 맞습니다.

2

파일을 열 후에는 경로가 올바른지있어 확인하기 위해 assert 문을 추가

4

절대 경로로 mydata.txt를 교체하십시오.

ifstream fin("mydata.txt"); 
assert(fin.good()); 

어설 션이 실패하면 파일 경로에 문제가 있음을 알 수 있습니다.

+0

코드에서 오류 검사로보고 싶습니다. 파일 열기는 항상 실패 할 수 있으며 좋은 코드가이를 처리 할 수 ​​있습니다. –

+0

예, 좋은 지적입니다. 적절한 C++ 코드는 오류가 발생해도 예외가 발생하지 않으므로 파일을 연 후 파일 스트림의 상태를 항상 확인해야합니다. –