2

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

5

这是一个测试

富吧

你所有的基地

班级

小马一起

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

}   
4

2 回答 2

1

b是 5,你的输入文件中仍然有几个额外的空白行。

如果你c通过这样做来增加大小char c[b*2][128];,它不会崩溃。

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

于 2013-08-03T18:05:24.167 回答
1

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

while(i < b && a.getline(c[i],128))
{
    cout<<c[i];
    i++;
}
于 2013-08-03T18:22:35.470 回答