为什么这个 'for loop' 不退出? C
Why isn't this 'for loop' exiting? C
我是 C 的初学者,我只是想知道为什么这个 'for loop' 没有退出:
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 循环,我仍然有同样的问题?
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
notenumber = aserveGetNote();
: 如果 aserveGetNote()
总是 returns 小于 16,则 for
循环无法完成。
尝试
for (notenumber=1; notenumber<=16; notenumber++)
{
int note = aserveGetNote();
fprintf(openfile, "Note = %d Notenumber %d\n", note,notenumber);
}
并遵循@iharob 的建议:将 fclose()
放在测试的 else
部分,以避免在 NULL
.[=18= 上调用 fclose()
]
欢迎使用 Whosebug!
问题已经回答。另一个提示:您确实在 fopen
之后检查 NULL
。但是,如果您收到 NULL
并致电 fclose
会怎样?在我的机器上出现分段错误。
我是 C 的初学者,我只是想知道为什么这个 'for loop' 没有退出:
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 循环,我仍然有同样的问题?
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
notenumber = aserveGetNote();
: 如果 aserveGetNote()
总是 returns 小于 16,则 for
循环无法完成。
尝试
for (notenumber=1; notenumber<=16; notenumber++)
{
int note = aserveGetNote();
fprintf(openfile, "Note = %d Notenumber %d\n", note,notenumber);
}
并遵循@iharob 的建议:将 fclose()
放在测试的 else
部分,以避免在 NULL
.[=18= 上调用 fclose()
]
欢迎使用 Whosebug!
问题已经回答。另一个提示:您确实在 fopen
之后检查 NULL
。但是,如果您收到 NULL
并致电 fclose
会怎样?在我的机器上出现分段错误。