sscanf 是按一定的格式从字符串中读取出字符,它有以下几种用法:
A = sscanf(str, format)
A = sscanf(str, format, sizeA)
[A, count] = sscanf(...)
[A, count, errmsg] = sscanf(...)
[A, count, errmsg, nextindex] = sscanf(...)
Description
A = sscanf(str, format) 是从字符串str中按读取文件,并转化成format格式并把它返回到A中。这个函数一直按这个要求读出str数据,直到字符串结束或者已经不能应用format规则。
如果已经不可以应用规则,那么就只把前面已经转化了的字符存到A中,并停止。要是数据超过了一行,那么此函数会按顺序逐行取,直到结束。
A = sscanf(str, format, sizeA)从str中读出sizeA个元素存进A,这里的sizeA只能是整数或是数组【m,n】中提取出来的。
[A, count] = sscanf(...)返回成功读取到元素个数。
[A, count, errmsg] = sscanf(...) 当操作失败的时候,返回一个错误提示框。 否则, errmsg 就是个空值
[A, count, errmsg, nextindex] = sscanf(...) 返回在str中读取到你指定的第nextindex个字段。
例子 1
从字符串中读取浮点型数据:
s = '2.7183 3.1416';
A = sscanf(s,'%f')
A =
2.7183
3.1416
例子 2
把八进制的数字用前缀的0来识别,并转成10进制:
sscanf('-010','%i')
ans =
-8
例子 3
对于二维的字符串数组. 函数默认是一次读取一行。
mixed = ['abc 45 6 ghi'; 'def 7 89 jkl'];
[nrows, ncols] = size(mixed);
for k = 1:nrows
nums(k,:) = sscanf(mixed(k,:), '%*s %d %d %*s', [1, inf]);
end;
% 键入变量名称,显示结果
nums =
45 6
7 89
例子 4
在字符串中找以 %s为标识的片段:
[str count] = sscanf('ThisIsOneString', '%s')
str =
ThisIsOneString
count =
1
比较上下这两个的不同,可以看出,有了空格,才能够区分出子字符串来。
[str count] = sscanf('These Are Four Strings', '%s')
str =
TheseAreFourStrings
count =
4
sscanf函数用 %s找到了五个字符串,而用
%c找到了4个空格. 就是因为有了4个空格,所以下面才会出现空格分隔出的格式串。
[str count] = sscanf('Five strings and four spaces', '%s%c')
str =
Five strings and four spaces
count =
9
str中有3个字符串和2个数字.因为格式混合,所以sscanf把所有非数字的转成了数字类型。
[str count] = sscanf('5 strings and 4 spaces', '%d%s%s%d%s');
str'
Columns 1 through 9
5 115 116 114 105 110 103 115 97
Columns 10 through 18
110 100 4 115 112 97 99 101 115
count
count =
5
例子 5
[str, count] = sscanf('one two three', '%c')
str =
one two three
count =
13
[str, count] = sscanf('one two three', '%13c')
str =
one two three
count =
1
[str, count] = sscanf('one two three', '%s')
str =
onetwothree
count =
3
[str, count] = sscanf('one two three', '%1s')
str =
onetwothree
count =
11
Example 6
tempString = '78°F 72°F 64°F 66°F 49°F';
degrees = char(176);
tempNumeric = sscanf(tempString, ['%d' degrees 'F'])'
tempNumeric =
78 72 64 66 49
本文详细介绍了Matlab中的sscanf函数,用于从字符串中按特定格式读取数据。通过多个示例展示了如何读取浮点型、整型、字符串等不同类型的数据,以及处理二维字符串数组和混合格式的情况。
1405

被折叠的 条评论
为什么被折叠?



