使用fprintf时出现意外错误

时间:2017-05-31 07:04:48

标签: matlab

我很困惑为什么我收到这个错误。当我打开一个新文件并运行我的代码时,它运行顺利,但如果我在第二天或同一天晚些时候打开同一个文件,我会收到此错误。

Error Image

works = cd;
t=(now);
s2 = datestr(t,'-FFF');
s3 = 6;
ind = [s2,s3];
try
    Zahler=[works,'zahler.txt'];
    fza=fopen(Zahler,'r');
    gen=fscanf(fza,'%8i');
    try
        Test = 1/gen;
    catch
        gen = 1;
    end
    gen=gen+1;
    fclose (fza);
    fza=fopen(Zahler,'w');
    fprintf(fza,'%8i',gen);
    fclose (fza);

catch
    Zahler=[works,'zahler.txt'];
    fza=fopen(Zahler,'w');
    gen = 0;
    fprintf(fza,'%8i',gen);% This is the error line
end

如果有人让我知道如何永久解决这个问题,我会很高兴。

1 个答案:

答案 0 :(得分:0)

如果在关闭文件之前发生异常,则会出现此错误。因此,您应该检查先前的文件打开是否尚未关闭,您应该先关闭它。然后重新打开文件并执行您想要的操作。此外,您应该记得在catch范围结束时关闭该文件。要做到这一点,最好使用fclose('all')来确保所有打开的文件都在catch范围的开头关闭,如下所示:

try
% ...
catch
    fclose('all');
    Zahler=[works,'zahler.txt'];
    fza=fopen(Zahler,'w');
    gen = 0;
    fprintf(fza,'%8i',gen);% This is the error line
    fclose(fza);
end