我正在尝试将文件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++;
}
}
答案 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++;
}