我正确传递参数吗?

时间:2018-02-22 06:25:02

标签: c++

我正在尝试让函数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;
}

1 个答案:

答案 0 :(得分:1)

您的程序有未定义的行为,因为fileName没有指向可以保存数据的任何有效内容。

除非您需要使用char的数组来保存文件名,否则请std::string使用fileName

std::string fileName;

如果您需要使用char的数组来保存文件名,请使用

char fileName[FILENAME_LENGTH];

确保FILENAME_LENGTH足够大,以满足您的需求。