wewaa 发表于 2007-6-14 11:59

sscanf 函数怎么用呢

看了help,还是不太懂,请指教一下,解释一下下边的例子就可以了
Example
A = ['abc 46 6 ghi'; 'def 7 89 jkl']                              
A =
   abc 46 6 ghi
   def 7 89 jkl

B = sscanf(A, '%*s %d %d %*s', )
B =
   476
   869

spano 发表于 2007-6-14 12:51

看看doc sscanf里面讲的比较详细,就懒得给你翻译过来了

花如月 发表于 2007-6-14 12:58

同意楼上的说法,这样的问题多费点心自己就可以搞定了

spano 发表于 2007-6-14 14:33

原帖由 wewaa 于 2007-6-14 11:59 发表 http://www.chinavib.com/forum/images/common/back.gif
看了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每次读取一个字符,而且读取的顺序是列优先从左到右的,然后同一列元素合为一个数
比如上面的例子中476689均为这样的数。
下面这个例子可以拿去佐证:
A = ['a bc 46 6 63 ghi 3 6';
       'd ef 7 89 2 jk9 12']
B = sscanf(A, '%*s %*s %d %d %d %*s %d', )
结果是B =
   476   623
   869    13
sscanf中用要求输入量内的元素必须严格等长,
像上面这样的用法我还没有用过,感觉没有什么大的用处。doc sscanf例子中不是给出了下面的用法:
for k = 1:2
   C(k,:) = sscanf(A(k, :)', '%*s %d %d %*s', );
end
C
C =
    46   6
   7    89
如果你是为了读取文件里面的数据,可以参考eight的精华帖里面关于txt文本读取的用法。

wewaa 发表于 2007-6-14 17:00

原帖由 spano 于 2007-6-14 14:33 发表 http://www.chinavib.com/forum/images/common/back.gif

每次读取一行,2代表A的行数,而%*s %d %d %*s表示读取每行前面4个组元。
因为sscanf每次读取一个字符,而且读取的顺序是列优先从左到右的,然后同一列元素合为一个数
比如上面的例子中476689均为这样的 ...
谢谢您的热心!解释的很详细!:victory:
页: [1]
查看完整版本: sscanf 函数怎么用呢