为什么这个'for loop'不会退出? C

时间:2015-03-07 12:22:08

标签: c loops for-loop

我是C的初学者,我只是想知道为什么这个' for循环'没有退出:

int main()
{
    FILE *openfile;
    int notenumber;

    openfile = fopen("test.txt", "w");

        if (openfile == NULL)
        {
            printf("Error opening file\n");
        }
        else
        {
            for (notenumber=1; notenumber<=16; notenumber++)
            {
                notenumber = aserveGetNote();
                fprintf(openfile, "Notenumber = %d\n", notenumber);         
            }

        }

        fclose(openfile);


    return 0;
}

我不明白为什么循环不会退出。即使我删除if else循环并且只有for循环,我仍然有同样的问题?

3 个答案:

答案 0 :(得分:2)

aserveGetNote()notenumber的值更改为低于16的值,因此循环永不退出,因为notenumber<=16;始终为真。

您可以通过以下方式解决问题:

int test=aserveGetNote();
fprintf(openfile, "Notenumber = %d\n", test);
// or fprintf(openfile, "Notenumber = %d\n", notenumber); as I don't know which value do you want to store

答案 1 :(得分:1)

notenumber = aserveGetNote();:如果aserveGetNote()总是返回低于16的内容,则for循环无法完成。

尝试

for (notenumber=1; notenumber<=16; notenumber++)
        {
            int note = aserveGetNote();
            fprintf(openfile, "Note = %d Notenumber %d\n", note,notenumber);         
        }

并遵循@iharob的建议:将fclose()放入测试的else部分,以避免在fclose()上调用NULL

欢迎使用Stackoverflow!

答案 2 :(得分:0)

这个问题已经回答了。还有一个提示:您在fopen之后检查了NULL。但如果你得到NULL并致电fclose会怎么样?在我的机器上,我收到了分段错误错误。