主要内容

sscanf

从字符串中读取格式化数据

描述

例子

一个= sscanf (strformatSpecstr,将其转换为指定的格式formatSpec,并以数组形式返回结果。str字符数组或字符串标量。的sscanf函数重复应用formatSpec中的字符序列str直到它到达终点str或者不匹配formatSpec到一个字符序列。如果str是具有多行的字符数组,sscanf按列顺序读取字符。

例子

一个= sscanf (strformatSpecsizeA将输出数组的大小设置为sizeA然后从str输入到输出数组中。sizeA必须是正整数还是有形式(mn),在那里而且n都是正整数。

例子

一个n= sscanf(___还返回元素的个数sscanf成功读入一个

例子

一个nerrmsg= sscanf(___还返回包含错误消息的字符向量sscanf读取所有数据失败一个.如果sscanf成功,然后errmsg是空字符向量。

例子

一个nerrmsgnextindex= sscanf(___还返回中位置的索引str紧跟着扫描到的最后一个字符sscanf

例子

全部折叠

创建一个字符向量,表示由空格分隔的数。将字符向量转换为数字列向量。sscanf将空格字符作为数字之间的分隔符。

空空的='2.7183 3.1416 0.0073'
CHR = '2.7183 3.1416 0.0073'
A = sscanf(chr,' % f '
一个=3×12.7183 3.1416 0.0073

创建一个表示多个数字的字符串,并使用sscanf.指定输出数组的大小。

str ="2.7183 3.1416 0.0073"
STR = "2.7183 3.1416 0.0073"
A = sscanf(str,' % f '1, [3])
一个=1×32.7183 3.1416 0.0073

转换str到2 × 2矩阵。因为str只表示三个数字,sscanf一个有足够的0来填满矩阵。

A = sscanf(str,' % f '(2 - 2))
一个=2×22.7183 0.0073 3.1416 0

创建一个包含用空格分隔的数字的字符串。数一下sscanf当它将字符串转换为数字时,输入到输出数组中。

str ="78 72 64 66 49"
STR = "78 72 64 66 49"

计算输出数组中的元素一个.属性转换字符串中的数字% d操作符。% d匹配以空格分隔的整数。返回in的元素数一个,指定第二个输出参数。

[A,n] = sscanf(str,' % d '
一个=5×178 72 64 66 49
N = 5

创建一个字符串并从中读取数据。当sscanf转换所有输入字符串失败,显示错误消息。

str =3.14159是圆周率的前六位数字
STR = "3.14159是圆周率的前6位"

将数字转换为str.自str还包含以下字符% f不能匹配,sscanf返回一个错误消息。sscanf一遇到单词就停止处理“是”因为它不能转换成数字。

[A,n,errmsg] = sscanf(str,' % f '
A = 3.1416
N = 1
errmsg = '格式匹配失败。'

创建一个字符向量并从中读取数据。当sscanf未能转换所有输入,则返回紧接在其所在位置后面的索引sscanf停止了。使用此索引显示未扫描的输入。

空空的=3.14159是圆周率的前6位
CHR = '3.14159是圆周率的前6位数字'

将数据转换为空空的.返回索引。

[A,~,~,nextindex] = sscanf(chr,' % f '
A = 3.1416
Nextindex = 9

显示的字符空空的sscanf没有扫描。

空空的nextindex:结束)
Ans = '是圆周率的前六位数字'

创建一个包含多个温度的字符串,由度符号和字母表示F.将温度转换为数值数组。

要插入度符号(char (176)),使用方法函数。

T =“78f 72f 64f 66f 49f”;degreeSymbol = char(176);T = insertBefore(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是字符数组,那么它可以有多行,和sscanf按列顺序读取字符。

数据类型:字符|字符串

输入字段的格式,使用格式化操作符指定。formatSpec可以是单引号中的字符向量,也可以是字符串标量。

数值字段

该表列出了将文本转换为数字输出的可用转换说明符。sscanf将值转换为十进制(以10为基数)表示。

数字字段类型

转换说明符

描述

整数,签署了

% d

以10为底。

%我

这些值决定基数:

  • 默认底数为10。

  • 如果首位数为0 x0 x,则值以16为基数(十六进制)。

  • 如果起始数字为0,则值以8为基数(八进制)。

% ld%李

64位值,以10、8或16为基数。

整数,无符号

% u

以10为底。

%啊

基数8(八进制)。

% x

以16为基数(十六进制)。

陆%%瞧% lx

64位值,以10、8或16为基数。

浮点数

% f% e,或% g

浮点值。输入字段可以包含以下任何一个(不区分大小写):,或.表示浮点数的输入字段可以包括前导+-符号和指数符号的使用eE.转换说明符% f% e,% g所有输入字段都以相同的方式处理。

字符字段

该表列出可用的转换说明符来转换文本,以便输出为字符数组。

字符字段类型

转换说明符

描述

字符向量或字符串标量

% s

读课文直到sscanf遇到空白。

% c

读取任何单个字符,包括空格。
若要一次读取多个字符,请指定字段宽度。例如,% 10 c一次读取10个字符。

模式匹配

%[…]

只能读取括号中的字符,直到第一个不匹配的字符或空白。

例子:%(亩)读取“夏天”作为“夏”

如果formatSpec则包含数字和字符说明符的组合sscanf将每个字符转换为其等效数字。

可选的运营商

  • 要忽略的字段和字符

    sscanf按顺序读取所有数值和字符,除非您告诉它忽略某个特定字段或字段的一部分。若要跳过字段,请插入星号(*)在百分号(% gydF4y2Ba).例如,要跳过整数,请指定% * d

  • 字段宽度

    若要指定一次读取的数字或文本字符的最大数量,请在百分比字符后插入一个数字。例如,% 10 c一次最多读取10个字符,包括空格。% 4 f一次最多读取四位数字,包括小数点。

  • 忽略文字

    sscanf忽略紧接在转换说明符之前或之后的指定文本。

    例子:水平% u读取“使”作为1

    例子:% uStep读取的2个步骤作为2

数据类型:字符|字符串

输出数组的尺寸,一个,指定为、正整数或两元行向量。

形式的sizeA输入

描述

将输入读到最后。
对于数值数据,一个是一个列向量。
对于文本数据,一个是一个字符向量。

n

最多阅读n数值或以空格分隔的字符字段。
对于数值数据,一个是一个列向量。
对于文本数据,一个是一个字符向量。

(mn)

最多阅读m * n数字值或字符字段。n可以,但不能。一个——- - - - - -n,按列顺序填写。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

输出参数

全部折叠

输出数据,作为列向量、矩阵或字符数组返回。的类别和大小一个所指定的转换formatSpec和指定的输出数组的大小sizeA

  • 如果formatSpec那么,只包含数字说明符一个是数值列向量。如果还指定sizeA参数,然后一个是指定大小的矩阵,必要时用零填充。如果输入的值小于sizeA值,然后是大小一个小于sizeA.相反,它是存储从输入扫描的值所需的大小。

    • 如果formatSpec则仅包含64位有符号整数说明符一个是一流的int64

    • 如果formatSpec则仅包含64位无符号整数说明符一个是一流的uint64

    • 否则,一个是一流的

  • 如果formatSpec只包含% c% s说明符,然后一个是一个字符向量。如果你还指定sizeA,然后一个是字符数组,必要时用空字符填充。(null字符是值为0的控制字符。)如果输入的值小于sizeA字符,则大小为一个小于sizeA.相反,它是存储从输入扫描的字符所需的大小。

  • 如果formatSpec则包含数字和字符说明符的组合一个是数字吗,sscanf将每个字符转换为其等效数字。这种转换甚至发生在formatSpec显式跳过所有数字字段(例如,formatSpec% * d %年代”).

  • 如果sscanf不能匹配所有的输入formatSpec,然后一个可以是数字或字符数组。这类人一个这取决于sscanf在停止处理之前读取。

数据类型:|int64|uint64|字符

读入输出数组的元素数,作为整数返回。

数据类型:

错误消息,作为字符向量返回。如果str包含以下任何数据sscanf那么不能转换errmsg包含错误信息。如果sscanf然后成功转换所有数据errmsg是空字符向量。

数据类型:字符

扫描到的最后一个字符之后的位置,作为整数返回。

数据类型:

提示

  • 读取函数的格式说明符sscanf而且fscanf不同于书写功能的格式sprintf而且.读取函数不支持精度字段。金宝appwidth字段指定写入的最小值,但读取的最大值。

扩展功能

版本历史

R2006a之前介绍