我遇到了一个奇怪的问题。当我尝试执行以下代码时,我在第一次迭代时遇到了分段错误:
const int lineTot = FinCurrentPopulation - DebutCurrentPopulation;
const int lseq = NumLoci + 2;
char seq[lineTot][lseq];
for(int line = 0; line < lineTot; line++) {
int chromosome = (line - DebutCurrentPopulation) % 2 + 1;
if(chromosome == 1)
id++;
if(in.good()) {
in.ignore(8, '\t');
in.ignore(8, '\t');
in.getline(seq[line], lseq);
}
}
in.close();
in是ifstream类型,并且在程序的早期成功打开。令我困惑的是,当我将char []提供给in.getline()时,代码按预期工作。另外,gdb告诉我故障是由if(in.good())引起的。有什么想法吗?
感谢。
编辑:制作lineTot和lseq编译时常量。