运行时检查失败#2,数组和混乱



我的代码有问题,它将92个温度从一个文件输入到3个数组中;腐败;在另一个数组中的一个数组上消失了,但是每当我在中添加第三个数组参数时,程序就会出现错误";运行时检查失败#2-变量"Apr"周围的堆栈已损坏"我试过使用不同的循环,或者把每个数组放在自己的函数中——我不知道该怎么办!可能需要一些帮助!

#include <iostream>
#include <fstream>
#include <iomanip>
#include <cmath>
#include <string>
using namespace std;
void readData(double March[], double April[], double May[]) {
ifstream inputFile;
inputFile.open("pgm6.txt");

for(int i = 0; i < 93; i++){
if (i < 31) {
inputFile >> March[i];
cout << "March " << March[i] << endl;
}
if (i > 30 && i < 61) {
inputFile >> April[i];
cout << "April " << April[i] << endl;
}
if (i > 60 && i < 92) {
inputFile >> May[i];
cout << "May " << May[i] << endl;
}
if (i > 91) {
break;
}
}

}
int main() {

double Mar[31], Apr[30], My[31];
readData(Mar, Apr, My);

return 0;

在C或C++中,数组是从零开始索引的,因此在循环中,对AprilMay数组的访问将是越界的。

在C++中,建议使用std::vectorstd::array,而不是C数组。

template <class MarchT, class AprilT, class MayT>
void readData(MarchT &March, AprilT &April, MayT &May)
{
ifstream inputFile;
inputFile.open("pgm6.txt");
for (auto &Value : March) {
inputFile >> Value;
cout << "March " << Value << endl;
}
for (auto &Value : April) {
inputFile >> Value;
cout << "April " << Value << endl;
}
for (auto &Value : May) {
inputFile >> Value;
cout << "May " << Value << endl;
}
}
int main()
{
std::array<double, 31> Mar;
std::array<double, 30> Apr;
std::array<double, 31> My;
readData(Mar, Apr, My);
return 0;
}

如果你还不了解C++模板,你可以:

void readData(
std::array<double, 31> &March,
std::array<double, 30> &April,
std::array<double, 31> &May
)
{
/* Same as above */
}

最新更新