数组分割错误

时间:2012-06-22 22:50:28

标签: c++ arrays segmentation-fault

我正在编写一个相当简单的代码,将存储在文件中的整数输入到中等大小的数组中,但是在编译和运行代码时,它会给出Segmentation错误,有人可以在我犯错的地方纠正我,代码是

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

using namespace std;

int main()
{
    int arr[100000];
    ifstream f;
    f.open("IntegerArray.txt");
    string line;

    if (f.is_open())
    {
        int i=0;
        while (f.good())
        {
            getline(f,line);
            arr[i++] = atoi(line.c_str());
        }
        f.close();
    }
    else
        cout<<"file not open";
    return 0;
}

1 个答案:

答案 0 :(得分:2)

使用getline()对文件中的一行进行rading后,应检查该流是否存在潜在错误,例如.fail(),其中:

  

如果为流设置了failbit或badbit错误状态标志中的任何一个(或两者),则返回true。

while (f.good())
{
    getline(f,line);

    if (f.fail()) {
        cout << "Corrupt data" << endl; // example output
        break;
    }

    // everything ok, continue with logic
    arr[i++] = atoi(line.c_str());
}