2010-12-02 38 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

你是什麼意思同一個目錄?在你的源文件?或者與構建的可執行文件相同?它在Linux中適用於我。 – Muggen 2010-12-02 16:40:39

+1

調用`fin.is_open()`來查看文件是否已被正確打開。 – detunized 2010-12-02 16:46:38

回答

1

我想mydata.txt與可執行文件不在同一目錄下,代碼適用於我

2

嘗試使用絕對路徑替換mydata.txt

4

您打開該文件後,添加一個assert語句,以確保你有正確的路徑。

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

如果斷言失敗,您將知道文件路徑可能有問題。