我遇到了分段错误,我不清楚为什么会这样做。它确实在我的csv中读取没有问题但是在运行结束时我得到了一个分段错误。我已经尝试使用Codeblocks的调试功能,但它没有太多帮助。有人可以指出我的错误。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void loadCSV(int G[][24]) {
ifstream csv;
string line;
csv.open("matrix.csv");
if (csv.is_open()){
int lineNum = 0;
while ( (getline (csv,line)) && (lineNum!=24)){
for (int pos = 0;pos<line.length();pos++){
if (line.at(pos) == ','){
continue;
}
//cout << line.at(pos);
if (line.at(pos) == '0'){
G[lineNum][pos] = 0;
cout << lineNum << "-" << pos << "\n";
}
else{
G[lineNum][pos] = 1;
cout << lineNum << "-" << pos << "\n";;
}
}
cout << endl;
lineNum++;
}
cout << lineNum<< endl;
csv.close();
}
else cout << "Unable to open file";
}
int main(){
int G[24][24];
loadCSV(G);
cout << G[0][1];
return 0;
}
答案 0 :(得分:0)
在将值赋给G [lineNum] [pos]之前,只需检查'pos'和'lineNum'的值。如果它们中的任何一个大于/等于24,那么进行分配就无效了。