原帖由 wewaa 于 2007-6-14 11:59 发表
看了help,还是不太懂,请指教一下,解释一下下边的例子就可以了
Example
A = ['abc 46 6 ghi'; 'def 7 89 jkl']
A =
abc 46 6 ghi
def 7 89 jkl
B = sscanf(A, ...
每次读取一行,2代表A的行数,而%*s %d %d %*s表示读取每行前面4个组元。
因为sscanf每次读取一个字符,而且读取的顺序是列优先从左到右的,然后同一列元素合为一个数
比如上面的例子中 476 689均为这样的数。
下面这个例子可以拿去佐证:
A = ['a bc 46 6 63 ghi 3 6';
'd ef 7 89 2 jk9 1 2']
B = sscanf(A, '%*s %*s %d %d %d %*s %d', [2, inf])
结果是B =
476 623
869 13
sscanf中用要求输入量内的元素必须严格等长,
像上面这样的用法我还没有用过,感觉没有什么大的用处。doc sscanf例子中不是给出了下面的用法:
for k = 1:2
C(k,:) = sscanf(A(k, :)', '%*s %d %d %*s', [1, inf]);
end
C
C =
46 6
7 89
如果你是为了读取文件里面的数据,可以参考eight的精华帖里面关于txt文本读取的用法。 |