文档

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是正整数。

例子

(一个,n]= sscanf (___)还返回元素的数量sscanf成功读取到一个

例子

(一个,n,errmsg]= sscanf (___)还包含一个错误消息,当返回一个特征向量sscanf无法读取所有数据一个。如果sscanf成功,然后errmsg是一个空的特征向量。

例子

(一个,n,errmsg,nextindex]= sscanf (___)还返回的索引位置str,立即扫描的最后一个字符sscanf

例子

全部折叠

创建一个特征矢量表示几个数字由空格分隔字符。将特征向量转换为一个数字列向量。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是一个字符数组,那么它可以有多个行,然后呢sscanf列顺序读取字符。

数据类型:字符|字符串

输入字段的格式,使用格式指定操作符。formatSpec可以在单引号字符向量或一个字符串标量。

数值字段

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

数值字段类型

转换说明符

描述

整数,签署了

% d

以10为底。

%我

基本确定的值:

  • 默认值是10。

  • 如果最初的数字0 x0 x,那么这个值是基地16(十六进制)。

  • 如果最初的数字08(八进制),那么值基地。

% 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个字符。

模式匹配

% […]

括号中只读人物第一nonmatching字符或空格。

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

如果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参数,然后一个是一个指定大小的矩阵,是垫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|字符

读入输出数组的元素数量,返回一个整数。

数据类型:

错误消息,作为一个特征向量返回。如果str包含任何数据,sscanf不能转换,那么errmsg包含一个错误消息。如果sscanf成功将所有的数据,然后errmsg是一个空的特征向量。

数据类型:字符

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

数据类型:

提示

  • 格式说明符的阅读功能sscanffscanf不同的格式写功能sprintf。不支持一个精密领域阅读功能。金宝app为写作宽度字段指定一个最小,但最大的阅读。

之前介绍过的R2006a