主要内容

sprintf

将数据格式化为字符串或字符向量

描述

例子

str= sprintf (formatSpecA1,…,一个)格式化数组中的数据A1,…,一个属性指定的格式化操作符formatSpec并返回结果文本str.的sprintf中的值的格式A1,…,一个按列排序。如果formatSpec是字符串,那么输出也是这样吗str.否则,str是一个字符向量。

若要以字符串数组或字符向量单元格数组的形式返回多个格式化文本,请使用组成函数。

strerrmsg= sprintf(formatSpecA1,…,一个)当操作不成功时,以字符向量的形式返回错误消息。否则,errmsg是空的。

str= sprintf (literalText)转换转义字符序列literalText,例如\ n而且\ t.它将返回所有其他未更改的字符。如果literalText包含格式化操作符(例如% f),然后str丢弃它和之后的所有字符。

例子

全部折叠

使用格式化浮点数% e% f,% g说明符。

A = 1/eps;Str_e = sprintf(' % 0.5 e”,)
Str_e = '4.50360e+15'
Str_f = sprintf(' % 0.5 f ',)
Str_f = '4503599627370496.00000'
Str_g = sprintf(% 0.5克的,)
Str_g = '4.5036e+15'

将文字文本与数组值结合以创建字符向量。

formatSpec ='数组是%dx%d。';A1 = 2;A2 = 3;str = sprintf(formatSpec,A1,A2)
str = '数组是2x3.'

若要以字符串形式返回格式化文本,请指定formatSpec方法时,作为字符串而不是字符向量sprintf函数。

转换数据并以字符串形式返回结果。

formatSpec ="当前时间为:%d:%d %s";A1 = 11;A2 = 20;A3 =“点”。;str = sprintf(formatSpec,A1,A2,A3)
str = "当前时间为上午11:20。"

转换输入字符串。包含文本的输入数组可以是字符向量或字符串。

A1 = 2;A2 = 35;A3 =“点”。;str = sprintf(formatSpec,A1,A2,A3)
str = "当前时间是:下午2:35。"

显式地将双精度值转换为整数。

STR = sprintf(' % d '而圆(π))
STR = '3'

指定打印值的最小宽度。

STR = sprintf(“% 025 d”[123456])
STR = '0000000000000000000123456'

0标志。% 025 d格式说明符要求在输出中输入前导零。

方法重新排序输入值n美元位置标识符。

A1 =“X”;A2 =“Y”;A3 =“Z”;formatSpec =' %3$s %2$s %1$s';str = sprintf(formatSpec,A1,A2,A3)
str = ' Z Y X'
C = {1,2,3;“AA”“BB”“CC”};STR = sprintf(' %d %s'C {:})
str = ' 1 AA 2 BB 3 CC'

的语法C {:}创建一个逗号分隔的数组列表,其中包含每个单元格的内容C按列排序。例如,C {1} = = 1而且C{2} = =“AA”

输入参数

全部折叠

输出字段的格式,使用格式化操作符指定。formatSpec也可以包括普通文本和特殊字符。

如果formatSpec包括表示转义字符的文本,例如\ n,然后sprintf翻译转义字符。

formatSpec可以是单引号中的字符向量,也可以是字符串标量。

格式化操作符

格式化操作符以百分号开头,% gydF4y2Ba,并以转换字符结束。转换字符是必需的。还可以指定标识符、标志、字段宽度、精度和之间的子类型操作符% gydF4y2Ba以及转换字符。(操作符之间的空格无效,此处仅为可读性起见)。

格式化操作符字符的示意图。

转换字符

此表显示将数字和字符数据格式化为文本的转换字符。

值类型 转换 细节

整数,签署了

% d%我

以10为底的

整数,无符号

% u

以10为底的

%啊

8进制(八进制)

% x

以16为基数(十六进制),小写字母一个- - - - - -f

% X

一样% x,大写字母一个- - - - - -F

浮点数

% f

定点记数法(使用精确运算符指定小数点后的位数。)

% e

指数符号,例如3.141593 e + 00(使用精确运算符指定小数点后的位数。)

% E

一样% e,但大写,如3.141593 e + 00(使用精确运算符指定小数点后的位数。)

% g

更紧凑的% e% f,不带后面的零(使用精确运算符指定有效数字的数量。)

% G

更紧凑的% E% f,不带后面的零(使用精确运算符指定有效数字的数量。)

字符或字符串

% c

单个字符

% s

字符向量或字符串数组。的类型与输出文本的类型相同formatSpec

可选的运营商

可选标识符、标志、字段宽度、精度和子类型操作符进一步定义了输出文本的格式。

  • 标识符

    处理函数输入参数的顺序。使用语法n,在那里n表示函数调用中其他输入参数的位置。

    例子:('%3$s %2$s %1$s %2$s','A','B','C')打印输入参数“一个”“B”“C”如下:b选项b。

    注意:如果输入参数是数组,则不能使用标识符从该输入参数指定特定数组元素。

  • 旗帜

    “- - -”

    对齐。
    例子:% -5.2度
    例子:% -10年代

    “+”

    对于任何数值,总是打印一个符号字符(+或-)。
    例子:% + 5.2 f
    文本对齐。
    例子:% + 10 s

    ' '

    在值之前插入一个空格。
    例子:% 5.2度

    ' 0 '

    填充到字段宽度,值前为零。
    例子:% 05.2度

    “#”

    修改选定的数值转换:

    • %啊% x,或% X、打印00 x,或0 x前缀。

    • % f% e,或% E,即使精度为0,也可打印小数点。

    • % g% G,不移除尾随零或小数点。

    例子:% # 5.0度

  • 字段宽度

    打印的最小字符数。字段宽度操作符可以是数字或星号()来引用输入参数。

    当你指定作为字段宽度操作符,其他输入参数必须同时提供宽度和要打印的值。宽度和值可以是参数对,也可以是数值数组中的参数对。与作为字段宽度操作符,您可以使用不同的宽度打印不同的值。

    例子:输入参数(intmax ' % 12 d ')都相当于(' % * d ', 12日intmax)

    例子:输入参数('%*d',[2 10 5 100])返回“100”,有两个名额供10还有五个位置One hundred..作为一种替代方法,您还可以将字段宽度和值指定为多个参数,如(' % * d ', 2, 10, 5100)

    除非flags另有指定,否则函数将在值前用空格填充字段宽度。

  • 精度

    % f% e,或% E

    小数点右边的位数
    例子:“% .4f”打印π作为“3.1416”

    % g% G

    有效位数
    例子:“% .4g”打印π作为“3.142”

    精确运算符可以是数字,也可以是星号()指一个论点。

    当你指定作为字段精度操作符,其他输入参数必须同时提供精度和要打印的值。精度和值可以是参数对,也可以是数值数组中的参数对。与作为精度操作符,您可以将不同的值打印到不同的精度。

    当你指定* . *作为字段宽度和精度操作符,必须以三元组的形式指定字段宽度、精度和值。

    例子:输入参数(' % .4f ',π)都相当于(' %。* f ' 4π)

    例子:输入参数(% 6.4 f,π)都相当于(' % *。* f ', 6日4π)

    例子:输入参数(' % *。* f ', 6日4π,9日,6日,exp (1))返回3.1416 - 2.718282的,9而且6作为场的宽度和精度的输出实验(1)

    请注意

    如果为浮点值指定的精度操作符超过输入数值数据类型的精度,则结果可能与输入值的精度不匹配。结果取决于您的计算机硬件和操作系统。

  • 子类型

    可以使用子类型操作符将浮点值打印为其八进制、十进制或十六进制值。子类型操作符紧接在转换字符的前面。下表显示了可以使用子类型的转换。

    输入值类型

    子类型和转换字符

    输出值类型

    浮点数

    % bx% bX
    %博
    % bu

    双精度十六进制、八进制或十进制值
    例子:% bx打印π作为400921 fb54442d18

    % tx% tX
    %,
    %你

    单精度十六进制、八进制或十进制值
    例子:% tx打印π作为40490身上

格式化操作符之前或之后的文本

formatSpec还可以在百分号之前包含额外的文本,% gydF4y2Ba,或转换字符后。文本可以是:

  • 普通文字打印。

  • 不能作为普通文本输入的特殊字符。此表显示了如何在中表示特殊字符formatSpec

    特殊字符

    表示

    单引号

    百分比的性格

    % %

    反斜杠

    \ \

    报警

    、一个

    退格

    \ b

    换页

    \ f

    新行

    \ n

    回车

    r \

    水平选项卡

    \ t

    垂直制表符

    v \

    Unicode字符®数值可以用十六进制数表示,N

    \ xN

    例子:sprintf(“\ x5A”)返回“Z”

    Unicode数值可以用八进制数表示的字符。N

    \ N

    例子:sprintf(' \ 132 ')返回“Z”

格式化操作符转换的显著行为

  • 数值转换只输出复数的实分量。

  • 如果指定的转换不适合数据,例如数值的文本转换,请使用MATLAB®重写指定的转换,并使用% e

    例子:' % s '转换π3.141593 e + 00

  • 如果应用文本转换(或% c% s)转换为整数值,MATLAB将对应于有效字符代码的值转换为字符。

    例子:' % s '转换[65 66 67]美国广播公司

数字、字符或字符串数组。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑|字符|字符串

输入没有格式化操作符的文本,指定为字符向量或字符串标量。sprintf翻译任何转义字符序列literalText

数据类型:字符|字符串

输出参数

全部折叠

格式化的文本,作为字符向量或字符串标量返回。的类型匹配输出的类型formatSpec

当操作不成功时,作为字符向量返回的错误消息。否则,errmsg是空的。

提示

  • sprintf函数类似于,但打印到文件或命令窗口。

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

  • 如果指定了无效的格式化操作符或特殊字符,则sprintf打印到无效操作符或字符之前的所有文本,并丢弃其余文本。

    例子:如果formatSpec'value = %z',然后sprintf打印“价值= '因为% z不是格式化操作符。

    例子:如果formatSpec'字符\x99999 = %s',然后sprintf打印“性格”因为\ x99999不是有效的特殊字符。

参考文献

[1]克尼根,B. W.和D. M.里奇,C语言,第二版,Prentice-Hall, Inc., 1988。

[2] ANSI规范X3.159-1989:“编程语言C,”ANSI, 1430 Broadway, New York, NY 10018。

扩展功能

版本历史

R2006a之前介绍