我有一个MATLAB脚本,我可以在上次使用它(一年前)时发誓工作正常.现在,我收到此错误:
Invalid file identifier. Use fopen to generate a valid file identifier.
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,则无法找到或打开(?)脚本中其他位置指定的文件.这是正确的吗?如果是这样,会导致什么?
nrz*_*nrz 10
fid(文件标识符)是输出fopen.它是一个整数,但与文件永久无关.你需要用来fopen获得fid.在我看来,您fid在某些与文件相关的I/O命令中使用了不正确的(文件标识符),例如fread,fscanf或fclose.不成功fopen给出fid的-1.对于任何有效的普通文件,成功fopen将给出fid该3更大或更大的整数.
但是,没有任何代码,就无法说出错误或错误的位置或内容.您可以使用MATLAB调试器从相关的单步执行代码fopen(在那里设置断点并运行您的程序),直到相关fclose并查看if fid(或用于文件标识符的任何变量名称)或文件标识符的任何数据结构(如果有)代码中的多个文件标识符)在相关fopen和fclose.之间的任何点上发生变化.
小智 8
我通过向fopen添加权限选项为我自己解决了这个问题.正如您在http://www.mathworks.se/help/matlab/ref/fopen.html中看到的,fopen语法是:
fileID = fopen(filename,permission)
Run Code Online (Sandbox Code Playgroud)
可能的权限,例如:'r'(默认值)| 'w'| 'a'| 'r +'| 'w +'| 'a +'| ...
'r' - 打开文件进行阅读.
'w' - 打开或创建新文件进行写作.丢弃现有内容(如果有).
'a' - 打开或创建用于写作的新文件.将数据附加到文件末尾.
'r +' - 打开文件进行读写.
'w +' - 打开或创建新文件进行读写.丢弃现有内容(如果有).
'a +' - 打开或创建新文件进行读写.将数据附加到文件末尾.
...
如果我使用fopen without permission选项,或者如果我使用'r'(默认)选项,fopen将返回-1,这是错误.我成功了:
fid=fopen('tmp.txt', 'w');
fid=fopen('tmp.txt', 'a');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
89813 次 |
| 最近记录: |