的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 =“的阵列是2×3”。

要返回格式的文本作为一个字符串,指定formatSpec作为一个字符串,而不是一个特征向量,当你调用的sprintf功能。

从R2017a开始,可以使用双引号创建字符串。转换数据并以字符串形式返回结果。

formatSpec =“当前时间是:%d:%d%s” 时;A1 = 11;A2 = 20;A3 ='上午。';STR = sprintf的(formatSpec,A1,A2,A3)
"当前时间是:上午11:20 "

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

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

显式转换双精度值的整数。

STR = sprintf的(' % d ',圆(PI))
STR = '3'

指定打印的值的最小宽度。

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

0国旗在%025d格式说明符请求输出中的前导零。

重新排序使用的输入值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 BB 2 3 CC'

语法C {:}创建一个逗号分隔的数组列表,其中包含每个单元格的内容C列顺序。例如,13 C {1} == 113 C {2} == 'AA'

输入参数

全部收缩

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

formatSpec可以是单引号中的字符向量,或者从R2016b开始,是字符串标量。

格式化操作符

格式化操作符以百分号开始,%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

可选的运营商

可选标识符,标志,场宽度,精度和亚型运营进一步限定输出文本的格式。

  • 标识符

    为了处理函数的输入参数。使用语法ñ$,其中ñ表示函数调用中其他输入参数的位置。

    例:( '%3 $ S%2 $ S%1 $ S%2 $ S', 'A', 'B', 'C')打印输入参数“一个”“B”“C”如下:C B A B

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

  • 旗帜

    ' - '

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

    '+'

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

    ' '

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

    '0'

    垫与所述值之前的零的字段宽度。
    例:%05.2f

    '#'

    修改选择的数字转换:

    • 对于Ø%%X,或%X,打印00 x,或0 x字首。

    • 对于%F%E,或%E,打印小数点即使精度为0。

    • 对于%G%G,不删除尾随零或小数点。

    例:%#5.0F

  • 字段宽度

    字符的最小数量打印。字段宽度操作员可以是数字,或星号(*)来指代一个输入参数。

    当您指定*作为宽度操作领域,其它输入自变量必须提供要打印二者的宽度和一个值。宽度和值可以是一个数值数组内对参数或对。与*作为字段宽度操作,你可以用不同宽度的打印不同的值。

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

    例:输入参数('%*d',[2 10 5 100])返回'10 100',为。分配了两个空间10和五个空格为One hundred.。另外,还可以将字段宽度和值指定为多个参数,如( '%* d',2,10,5,100)

    功能焊盘字段宽度与前值空间,除非另有由标志指定。

  • 精确

    对于%F%E,或%E

    中位数小数点右边
    例:“% .4f”版画π'3.1416'

    对于%G%G

    的显著位数
    例:“% .4g”版画π'3.142'

    精度操作员可以是数字,或星号(*)来指代一个参数。

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

    当您指定*。*作为场宽度和精度运营商,必须指定字段的宽度,精度,和作为三元组的值。

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

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

    例:输入参数( '%*。* F',6,4,PI,9,6,实验值(1))返回3.1416 - 2.718282的96作为字段宽度和精度的输出实验(1)

    注意

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

  • 亚型

    您可以使用一个亚型操作打印浮点值作为其八进制,十进制或十六进制值。亚型运营商紧接在转换角色。下表列出了可以使用亚型转换。

    输入值类型

    亚型和转换字符

    输出值类型

    浮点数

    %BX%BX
    博%
    %BU

    双精度十六进制,八进制或十进制值
    例:%BX版画π400921fb54442d18

    % tx%TX
    %,
    %你

    单精度十六进制,八进制或十进制值
    例:% tx版画π40490身上

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

formatSpec也可以百分号之前包括附加的文字,%GydF4y2Ba,或转换后的字符。文本可以是:

  • 普通的文本打印。

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

    特殊字符

    表示

    单引号

    “”

    百分比的性格

    %%

    反斜杠

    \\

    报警

    \一个

    退格

    \ b

    换页

    \F

    新队

    \ n

    回车

    \ r

    水平制表

    \ t

    垂直制表

    符\ v

    其性格的Unicode®数字值可以由十六进制数来表示,ñ

    \ XN

    例:的sprintf( '\ X5A')回报“Z”

    字符的Unicode其数值可以通过八进制数来表示,ñ

    \ n

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

转换的显着特性与格式符

  • 数值转换只打印复数的实部份。

  • 如果您指定的转换不适合的数据,如数值,MATLAB文本转换®覆盖指定的转换,并且使用%E

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

  • 如果您将文本转换(无论是%C%S)转换为整数值,MATLAB将对应于有效字符代码的值转换为字符。

    例:'%s' 的转换[65 66 67]ABC

数据类型:烧焦|

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

数据类型:||int8|INT16|INT32|Int64的|uint8|UINT16|uint32|uint64|合乎逻辑|烧焦|

输入的文本,而不格式化操作符,指定为字符向量或标量的字符串。的sprintf平移以任何转义字符序列literalText

数据类型:烧焦|

输出参数

全部收缩

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

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

提示

  • 的sprintf功能类似于打印到文件或命令窗口。

  • 格式说明符的读取功能sscanf的fscanf不同于编写函数的格式的sprintf。阅读功能不支持某个精度场。万博1manbetx宽度字段指定的最低写入,但用于读取最大。

参考

[1] Kernighan, b.w.,和d.m. Ritchie,C程序设计语言,第二版,普伦蒂斯-霍尔公司,1988。

[2] ANSI规范X3.159-1989:“C语言编程”,ANSI,1430百老汇,纽约,NY 10018。

扩展功能

之前介绍过的R2006a