读取csv文件会出现分段错误

时间:2014-02-24 05:09:03

标签: c++ csv segmentation-fault

我遇到了分段错误,我不清楚为什么会这样做。它确实在我的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;
}

1 个答案:

答案 0 :(得分:0)

在将值赋给G [lineNum] [pos]之前,只需检查'pos'和'lineNum'的值。如果它们中的任何一个大于/等于24,那么进行分配就无效了。