-1

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

#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;
}
4

1 回答 1

2

使用 对文件中的一行进行 rading 后getline(),应检查流中是否存在潜在错误,例如使用.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());
}
于 2017-03-05T21:28:34.380 回答