我试图使用递归方法在文本文件中反转我的行。我现在非常困难,我当前的输出是分段错误 - 有人可以解释分段错误是什么来推动我朝着正确的方向前进吗?
.scorePoints{
display:flex;
justify-content: center;
}
.DualScorepoints {
display: flex;
align-items: center;
}
答案 0 :(得分:1)
您收到分段错误,因为您的第一个if语句中有||
条件,其中一个条件总是为真,导致堆栈从无限递归中溢出!将其更改为&&
,它应该全部修复!
if((c = getchar()) != EOF && (c != '\n'))
编辑:此外,我认为由于第二个getchar(),您将遇到一些不正确的功能。我会将你的功能改为:
void RecursionLine()
{
int c = getchar();
if(c != EOF || c != '\n')
{
RecursionLine();
printf("%c",c);
}
else if(c != EOF && c == '\n'){
printf("\n");
RecursionLine();
}
}
否则你将在每次迭代中读取可能的2个字符,这将导致跳过其中一个/两个!