我是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循环,我仍然有同样的问题?
答案 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
会怎么样?在我的机器上,我收到了分段错误错误。