C 尝试进入for循环时出现分段错误(堆芯转储)

C 尝试进入for循环时出现分段错误(堆芯转储),c,eclipse,for-loop,segmentation-fault,C,Eclipse,For Loop,Segmentation Fault,我的代码是: int main (void){ int i,j,k,x; . . . printf("before loop\n"); for (x=0; x<5; x++){ printf("loop %d",x); //do something... } . . . return 0; } int main(无效){ int i,j,k,x; . . . printf(

我的代码是:

int main (void){

    int i,j,k,x;
    .
    .
    .
    printf("before loop\n");

    for (x=0; x<5; x++){
        printf("loop %d",x);
        //do something...
    }
    .
    .
    .
return 0;
}
int main(无效){
int i,j,k,x;
.
.
.
printf(“循环前\n”);

对于(x=0;x我确实找到了问题,尽管我不明白为什么它能解决它。 在内部打印(循环内部)-结尾处需要有“\n”:

for (x=0; x<5; x++){
    printf("loop %d\n",x);
.
.
.

for(x=0;x欢迎使用堆栈溢出!您介意创建一个?问题,寻求调试帮助(“此代码为什么不工作?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现该问题所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建最小、完整且可验证的示例。您是否尝试过在调试器中捕获崩溃?代码中的哪里有发生这种情况?所有涉及的变量的值是什么?您是否尝试过使用内存调试器,例如?什么优化标志(如果有)您在构建时使用了吗?最后,如果没有a,您真的不可能正确地帮助您。您得到这一点是因为问题中不存在代码中的某些错误…最好更改:
printf(“循环%d”,x);
printf(“循环%d\n”,x);
因此输出会立即显示,在终端上每行显示一个条目,而不是在缓冲区溢出、执行输入操作或某些其他代码输出“\n”之前一直放在标准输出缓冲区中。您必须更改其他内容,因为最初发布的
printf()
语句不会导致seg故障事件。例如,代码中的其他地方存在一些未定义的行为。强烈建议发布整个函数,以便我们可以帮助您找到问题的实际根源。
stdout
stderr
默认情况下是行缓冲的,这意味着使用
putc()对其进行写入
put()
fprintf()
被保存在缓冲区中,直到遇到
\n
或缓冲区已满。调用
fflush()
也会溢出缓冲区。
setvbuf()
函数允许设置流的模式。它可以设置为“未缓冲”、“行缓冲”或“完全缓冲”。您的segfault可能与其他内容有关。您的摘录不包含任何“攻击性”代码。