我是正确传递参数吗?

Am I passing parameters correctly?

本文关键字:参数      更新时间:2023-10-16

我正在尝试获取函数getFilename以提示用户要读取哪个文件,然后将其传递给函数readFile,该函数CC_2计算文件中的数字,然后(使用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;
}


int main()
{
   char* fileName;
   int average;
   getFilename(fileName);
   readFile(fileName);
   displayAverage(average);
   return 0;
}

您的程序具有不确定的行为

除非您需要使用char s数组来容纳文件名,否则使用std::string用于fileName

std::string fileName;

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

char fileName[FILENAME_LENGTH];

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