我有一个如下所示的文件:
Time M1:Address 480008C0
0 79F9446F
0.000125 7AE7446B
0.00025 7BA8446F
...
由标签分隔的2个数字,一个是十六进制数字。我期待在scilab中将这些读成十进制数组。我试图按如下方式打开并阅读该文件:
u=mopen('proper_log_with_fail.txt','r'); // open the file for reading
s = mscanf(u, '%s'); // Forget the first line
[time,val]=mfscanf(u,'%e\t%x'); // Get the second line
所以我无法阅读任何价值......?我甚至无法读取第一个字符串?我做了一些非常明显的错误吗?
答案 0 :(得分:2)
可能是一个拼写错误,但是对于您使用mscanf
的第一行应该是mfscanf
来读取文件。更改此项时,它会显示您的第一行不匹配,请注意%s
仅匹配一个字,然后在下一个空格处停止。
要读取(并丢弃)第一行,请使用mgetl
并告诉它读取1行。如果输入文件的其余部分是以相同方式格式化的数据,则可以使用mfscanf
的niter
参数来保持匹配,直到文件结尾(EOF)。
file_path = 'proper_log_with_fail.txt';
// open the file for reading
fd=mopen(file_path,'r');
// Read/display header line
number_of_lines_to_read = 1;
header = mgetl(fd, number_of_lines_to_read);
disp(header);
// Scan all lines up until EOF
niter = -1
s = mfscanf(niter, fd, '%e %x');
disp(s)
// Close the file after reading
mclose(fd)