从文件输入行到char数组

时间:2013-08-03 17:53:54

标签: c++

我正在尝试将文件B-small-practice.in中的每一行读入一个char数组,但是我遇到了分段错误。

5

这是一个测试

foobar的

所有基地

小马沿着

#include<iostream>
#include<fstream>
using namespace std;

main()
{
    ifstream a("B-small-practice.in",ios::in);

    int b,i=0;

    a>>b;

    char c[b][128];

    while(a.getline(c[i],128))
    {
        cout<<c[i];
        i++;
    }

}   

2 个答案:

答案 0 :(得分:1)

您的b为5,输入文件中还有几个空行。

如果您通过c增加char c[b*2][128];尺寸,则不会崩溃。

否则从输入文件中删除额外的换行符。

答案 1 :(得分:1)

由于您没有进行任何边界检查,可能的原因是您将数据存储在数组的末尾。您可以使用以下内容检查while循环中的边界...

while(i < b && a.getline(c[i],128))
{
    cout<<c[i];
    i++;
}