gpt4 book ai didi

c++ - 将文件中的数据读入数组 - C++

转载 作者:行者123 更新时间:2023-12-01 22:11:57 24 4
gpt4 key购买 nike

我想从我的输入文件中读取数据

70 95 62 88 90 85 75 79 50 80 82 88 81 93 75 78 62 55 89 94 73 82

并将每个值存储在一个数组中。这个特定问题还有更多(其他功能现在被注释掉了)但这才是真正给我带来麻烦的地方。我在上一个关于数据和数组的问题上看了几个小时,但我找不到我在哪里犯了错误。

这是我的代码:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

const int SIZE = 22;
int grades[SIZE];

void readData() {

int i = 0;
int grades[i];

string inFileName = "grades.txt";
ifstream inFile;
inFile.open(inFileName.c_str());

if (inFile.is_open())
{
for (i = 0; i < SIZE; i++)
{
inFile >> grades[i];
cout << grades[i] << " ";
}

inFile.close(); // CLose input file
}
else { //Error message
cerr << "Can't find input file " << inFileName << endl;
}
}
/*
double getAverage() {

return 0;
}

void printGradesTable() {

}

void printGradesInRow() {

}


void min () {
int pos = 0;
int minimum = grades[pos];

cout << "Minimum " << minimum << " at position " << pos << endl;
}

void max () {
int pos = 0;
int maximum = grades[pos];

cout << "Maximum " << maximum << " at position " << pos << endl;
}

void sort() {

}
*/


int main ()
{
readData();
return 0;
}

这是我的输出:

 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

感谢您的宝贵时间。

最佳答案

问题是您声明了一个大小为 1 的本地 grades 数组,隐藏了全局 grades 数组。不仅如此,您现在正在越界访问数组,因为本地 grades 数组只能容纳 1 个项目。

所以摆脱这条线:

int grades[i];

但是,需要说明的是:

int i = 0;
int grades[i];

不是有效的 C++ 语法。您只是无意中遇到了这个问题,但如果使用严格的 ANSI C++ 编译器编译,该代码将无法编译。

C++ 中的数组必须使用常量表达式来声明,以表示数组中的条目数,而不是变量。您无意中使用了称为可变长度数组 或简称为 VLA 的非标准编译器扩展。

如果这是一项学校作业,请不要以这种方式声明数组(即使您打算这样做),因为它不是正式的 C++。如果你想声明一个动态数组,这就是 std::vector 的用途。

关于c++ - 将文件中的数据读入数组 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47426692/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com