我花了几个小时来理解为什么我的代码最终会产生错误(对于足够多的循环)。我将问题简化为以下 MWE:
file fout=stdout; // to write on Terminal
for(int j=1;j<=30;j=j+1)
{
write(fout,'\n');
write(fout,j);
for (int i=j; i<50; i=i+1)
{
file in1=input("gag.dat").line().csv();
}
}
gag.dat
可以是任何东西,包括空文件。我在两台独立的计算机上测试过(均在 Linux 下),都返回错误当j
达到30:
10.6: runtime: Cannot open file "gag.dat"
这非常烦人,因为它阻止我制作动画。我可以按片段j
(1 到 10、11 到 20 等)编译我的代码,但随后我必须重命名每个输出文件。
除了 bug 以外还能是别的什么吗?!
欢迎任何解决方案或解决方法。
答案1
除了 bug 以外还能是别的什么吗?!
是的。打开的文件应该关闭(用close(filename)
)...以下代码有效。
file fout=stdout; // to write on Terminal
for(int j=1;j<=30;j=j+1)
{
write(fout,'\n');
write(fout,j);
for (int i=j; i<50; i=i+1)
{
file in1=input("gag.dat").line().csv();
close(in1); // <- ADDED LINE
}
}
对不起打扰...