sscanf
从字符串读取格式化的数据
语法
一个= sscanf (str formatSpec)
= sscanf (str formatSpec sizeA)
[n] = sscanf (___)
[n, errmsg] = sscanf (___)
[n, errmsg, nextindex] = sscanf (___)
描述
读取的数据一个
= sscanf (str
,formatSpec
)str
按照指定的格式,转换它formatSpec
数组中,并返回结果。str
是字符数组或字符串标量。的sscanf
函数反复适用formatSpec
的字符序列str
直到它结束str
或不匹配formatSpec
一个字符序列。如果str
是一个字符数组,超过一行,sscanf
列顺序读取字符。
设置输出数组的大小一个
= sscanf (str
,formatSpec
,sizeA
)sizeA
然后读取数据str
到输出数组。sizeA
必须是一个正整数或表单吗(mn)
,在那里米
和n
是正整数。
例子
特征向量转换为数字
创建一个特征矢量表示几个数字由空格分隔字符。将特征向量转换为一个数字列向量。sscanf
把空格字符作为分隔符之间的数字。
空空的=“2.7183 3.1416 0.0073”
装备= ' 2.7183 3.1416 0.0073 '
一个= sscanf(空空的,' % f ')
一个=3×12.7183 3.1416 0.0073
文本转换和调整输出数组
创建一个字符串,表示几个数字和将其转换使用sscanf
。指定输出数组的大小。
从R2017a,您可以创建使用双引号字符串。
str =“2.7183 3.1416 0.0073
str = " 2.7183 3.1416 0.0073 "
一个= sscanf (str,' % f '1,[3])
一个=1×32.7183 3.1416 0.0073
转换str
一个2×2的矩阵。因为str
代表只有三个数字,sscanf
垫一个
有足够的零填充矩阵。
一个= sscanf (str,' % f '(2 - 2))
一个=2×22.7183 0.0073 3.1416 0
元素中的文本
创建一个字符串,其中包含数字由空格分隔字符。数的元素sscanf
说到输出数组时,它将字符串转换为数字。
从R2017a,您可以创建使用双引号字符串。
str =“78 72 64 66 49”
str = " 78 72 64 66 49”
计算输出数组中的元素一个
。的数字字符串转换使用% d
操作符。% d
匹配整数由空格隔开。返回元素的数量一个
,指定第二个输出参数。
[n] = sscanf (str,' % d ')
一个=5×178 72 64 66 49
n = 5
显示错误消息
创建一个字符串并读取数据。当sscanf
不能把所有的输入字符串,显示错误消息。
从R2017a,您可以创建使用双引号字符串。
str =“π的3.14159是第一个6位数”
str = " 3.14159π”的前6位数字
转换的数量str
。自str
还包含字符% f
不能匹配,sscanf
返回一个错误消息。sscanf
停止处理就遇到这个词“是”
因为它不能被转换为一个数字。
[n, errmsg] = sscanf (str,' % f ')
一个= 3.1416
n = 1
在格式errmsg = '匹配失败。
返回最后一个位置扫描
创建一个特征向量并读取数据。当sscanf
未能把所有的输入,返回索引立即遵循的位置sscanf
停止了。使用这个索引显示未测量的输入。
空空的=π的3.14159是第一个6位数
装备=π的3.14159是第一个6位数
转换的数据空空的
。返回索引。
[A, ~, ~, nextindex] = sscanf(空空的,' % f ')
一个= 3.1416
nextindex = 9
显示的字符空空的
那sscanf
没有扫描。
空空的nextindex:结束)
ans =π的第一个6位数
匹配指定的字符
创建一个字符串,其中包含几个温度,表示程度的象征和信F
。将温度转换成数值型数组。
从R2017a,您可以创建使用双引号字符串。插入符号(程度char (176)
),用方法
函数。
T =“78 72 66 64 f f 49 f”;degreeSymbol = char (176);方法T = T)“F”degreeSymbol)
T = " 78°F (72°F (64°F (66°F 49°F”
返回温度作为数字数组。
A = sscanf (T, strcat (“% d”degreeSymbol,“F”))
一个=5×178 72 64 66 49
输入参数
str
- - - - - -输入文本扫描
字符数组|字符串标量
输入文本扫描,指定为一个字符数组或字符串标量。如果str
是一个字符数组,那么它可以有多个行,然后呢sscanf
列顺序读取字符。
数据类型:字符
|字符串
formatSpec
- - - - - -输入字段的格式
格式化操作
输入字段的格式,使用格式指定操作符。formatSpec
可以在单引号字符向量或一个字符串标量。
数值字段
此表列出了可用的转换说明符将文本转换成数字输出。sscanf
将值转换为十进制(基地10)表示。
数值字段类型 |
转换说明符 |
描述 |
---|---|---|
整数,签署了 |
|
以10为底。 |
|
基本确定的值:
|
|
|
64位的值,以10为底的8或16。 |
|
整数,无符号 |
|
以10为底。 |
|
基数8(八进制)。 |
|
|
基地16(十六进制)。 |
|
|
64位的值,以10为底的8或16。 |
|
浮点数 |
|
浮点值。输入字段可以包含下列(不区分大小写): |
字符字段
此表列出了可用的转换说明符转换文本的输出是一个字符数组。
字符字段类型 |
转换说明符 |
描述 |
---|---|---|
特征向量或字符串标量 |
|
直到读课文 |
|
阅读任何单个字符,包括空格。 |
|
模式匹配 |
|
括号中只读人物第一nonmatching字符或空格。 例子: |
如果formatSpec
包含数字和字符的组合说明符,然后sscanf
将每个字符转换为它的等效数值。
可选的运营商
字段和字符,不容忽视
sscanf
按顺序读取所有数值和人物,除非你告诉它忽略特定领域或领域的一部分。跳过字段插入星号(*
百分号(后)% gydF4y2Ba
)。例如,跳过整数,指定% * d
。字段宽度
指定的最大数量的数字或文本字符阅读一次,后插入一个数量百分比的性格。例如,
% 10 c
一次读取多达10个字符,包括空格。% 4 f
每次读到四位数,包括小数点。文字可忽略
sscanf
忽略之前或之后立即指定文本转换说明符。例子:
水平% u
读取“使”
作为1
。例子:
% uStep
读取的2个步骤
作为2
。
数据类型:字符
|字符串
sizeA
- - - - - -输出数组的维度
正
(默认)|整数|双元素行向量
维输出的数组,一个
,指定为正
、一个正整数或双元素行向量。
形式的 |
描述 |
---|---|
|
读取输入。 |
|
读最多 |
|
读最多 |
数据类型:双
|单
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
输出参数
一个
——输出数据
矩阵列向量| |字符数组
输出数据,返回为一个列向量,矩阵,或字符数组。的类和大小一个
取决于指定的转换formatSpec
和指定的输出数组的大小sizeA
:
如果
formatSpec
只包含数字说明符一个
是一个数字列向量。如果你指定sizeA
参数,然后一个
是一个指定大小的矩阵,是垫0如果必要的。如果输入包含少于sizeA
值,然后的大小一个
小于sizeA
。相反,它是大小需要存储扫描从输入的值。如果
formatSpec
只包含64位带符号整数说明符,然后一个
的类int64
。如果
formatSpec
只包含64位无符号整数说明符,然后一个
的类uint64
。否则,
一个
的类双
。
如果
formatSpec
只包含% c
或% s
说明符,然后一个
是一个特征向量。如果你指定sizeA
,然后一个
是一个字符数组,根据需要填充空字符。(null字符是一个控制字符值零。)如果输入包含少于sizeA
字符,然后的大小一个
小于sizeA
。相反,它需要存储大小的字符扫描输入。如果
formatSpec
包含数字和字符的组合说明符,然后一个
是数字,类双
,sscanf
将每个字符转换为它的等效数值。即使发生这种转换formatSpec
显式跳过所有数值字段(例如,formatSpec
是% * d %年代”
)。如果
sscanf
不能匹配所有的输入formatSpec
,然后一个
可以是数字或字符数组。的类一个
取决于价值观sscanf
读取之前停止处理。
数据类型:双
|int64
|uint64
|字符
n
——读入输出数组的元素数量
整数
读入输出数组的元素数量,返回一个整数。
数据类型:双
errmsg
——错误消息
特征向量
错误消息,作为一个特征向量返回。如果str
包含任何数据,sscanf
不能转换,那么errmsg
包含一个错误消息。如果sscanf
成功将所有的数据,然后errmsg
是一个空的特征向量。
数据类型:字符
nextindex
——扫描位置后最后一个字符
整数
最后一个字符后扫描位置,作为一个整数返回。
数据类型:双
提示
格式说明符的阅读功能
sscanf
和fscanf
不同的格式写功能sprintf
和流
。不支持一个精密领域阅读功能。金宝app为写作宽度字段指定一个最小,但最大的阅读。
之前介绍过的R2006a
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。