程序6.16 sumafile.app
打开用户指定的文件,读取其中的数字,然后指出文件中包含多少个值以及它们的和与平均值。
#include<iostream>
#include<fstream>
#include<cstdlib>
const int SIZE = 60;
int main()
{
using namespace std;
char filename[SIZE];
ifstream inFile;
cout << "Enter name of data file: ";
cin.getline(filename, SIZE);
inFile.open(filename);
if (!inFile.is_open())
{
cout << "Could not open the file " << filename << endl;
cout << "Program terminating. \n";
exit(EXIT_FAILURE);
}
double value;
double sum = 0.0;
int count = 0;
inFile >> value;
//while (inFile.good())
while (inFile >> value) //cin抽取字符返回值为cin
{
++count;
sum += value;
//inFile >> value;
}
if (inFile.eof())
cout << "End of file reached.\n";
else if (inFile.fail())
cout << "input terminated by data mismatch.\n";
else
cout << "Input terminated for unknown reason.\n";
if (count == 0)
cout << "No data processed.\n";
else
{
cout << "Items read: " << count << endl;
cout << "Sum: " << sum << endl;
cout << "Average: " << sum / count << endl;
}
inFile.close();
return 0;
}
知识点总结
- inFile.is_open():判断文件是否成功打开,若成功返回一个bool值;
- exit()函数:在头文件cstdlib中定义,还定义了一个用于同操作系统通信的参数值EXIT_FAILURE,用于终止程序;
- inFile.good():文件是否读取成功,输出为布尔值;
- inFile.eof():文件是否到了文件尾;
- inFile.fail():文件与要求是否匹配。