New*_*yes 6 linux ubuntu matlab skip fwrite
假设我有以下代码:
fid = fopen(my_filename,'w','ieee-le','ISO-8859-1');
fwrite(fid,1,'short',10,'ieee-le')
Run Code Online (Sandbox Code Playgroud)
然后这将打开一个早期指定的文件,跳过前10个字节并将1写入以下两个.
但前十个字节会发生什么,假设打开的文件以前不存在?如果我要访问一个,我最终会得到什么?为什么?
来自POSIX 文档:
该
fseek()函数应允许将文件位置指示符设置为超出文件中现有数据的末尾。如果稍后在此时写入数据,则后续读取间隙中的数据将返回值为 0 的字节,直到数据实际写入间隙为止。
因此,假设 MATLABfwrite使用fseek跳过再见(这很有可能),那么在任何 POSIX 体系结构(Linux、MacOS)上,文件末尾之后跳过的字节都将用零填充。Windows 则不一定如此,因为 Windows 不是 POSIX。
MacOS 上的快速测试证实了此行为:
fn = 'test.bin';
fid = fopen(fn,'wb');
fwrite(fid,1,'uchar',10);
fclose(fid);
fid = fopen(fn,'r');
fread(fid,Inf,'uchar')
fclose(fid);
Run Code Online (Sandbox Code Playgroud)
输出:
ans =
0
0
0
0
0
0
0
0
0
0
1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |