我正在尝试让函数getFilename
提示用户要读取哪个文件,然后将其传递给函数readFile
,该函数计算文件中的数字然后(使用{{ 1}})显示文件中数字的平均值。
我是编码的新手,无法弄清楚为什么它似乎没有使用displayAverage
函数...程序会提示用户输入文件,但之后只输入一个空白线。我打电话给功能&正确传递参数?
readFile
void getFilename(char fileName[])
{
cout << "Please enter the filename: ";
cin >> fileName;
return;
}
float readFile(char fileName[])
{
cout.setf(ios::fixed);
cout.precision(0);
ifstream fin(fileName);
int sum = 0;
int numValue = 0;
float grades = 0;
float average= 0;
if (fin.fail())
{
cout << "Error opening file \"" << fileName << "\"";
return false;
}
while (!fin.eof())
{
fin >> grades;
sum += grades;
numValue++;
if (numValue != 10)
cout << "Error reading file \"" << fileName << "\"";
}
fin.close();
average = sum / 10;
return average;
}
void displayAverage(int average)
{
cout << average;
return;
}
答案 0 :(得分:1)
您的程序有未定义的行为,因为fileName
没有指向可以保存数据的任何有效内容。
除非您需要使用char
的数组来保存文件名,否则请std::string
使用fileName
。
std::string fileName;
如果您需要使用char
的数组来保存文件名,请使用
char fileName[FILENAME_LENGTH];
确保FILENAME_LENGTH
足够大,以满足您的需求。