格式数据转换成字符串或字符向量
格式化在阵列中的数据str
= sprintf (formatSpec
,A1,...,一
)A1,...,一
指定的格式化操作符formatSpec
并返回结果中的文本str
。该的sprintf
函数格式化中的值A1,...,一
列顺序。如果formatSpec
是字符串的,那么输出str
。否则,str
是一个字符向量。
返回格式的文本的多块作为一个字符串数组或字符向量的单元阵列中,使用撰写
功能。
[
当操作不成功时,以字符向量的形式返回错误消息。否则,str
,ERRMSG
)= sprintf (formatSpec
,A1,...,一
)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的('%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} == 1
和13 C {2} == 'AA'
。
formatSpec
-输出字段的格式输出字段的格式,使用格式化操作符指定。formatSpec
还可以包括普通的文本和特殊字符。
formatSpec
可以是单引号中的字符向量,或者从R2016b开始,是字符串标量。
格式化操作符
格式化操作符以百分号开始,%GydF4y2Ba
,并用转换字符结束。变换字符是必需的。可选地,可以指定标识符,标志,场宽度,精度和亚型运营商之间%GydF4y2Ba
和转换字符。(操作符之间的空格是无效的,在这里显示只是为了可读性)。
转换字符
此表显示转换的字符格式,数字和字符数据作为文本。
值类型 | 转换 | 细节 |
---|---|---|
整型,签署 |
|
基地10 |
整型,无符号 |
|
基地10 |
|
基座8(八进制) |
|
|
基16(十六进制),小写字母 |
|
|
和...一样 |
|
浮点数 |
|
定点表示法(使用精密运算符指定的小数点后的位数)。 |
|
指数符号,如 |
|
|
和...一样 |
|
|
的更紧凑 |
|
|
的更紧凑 |
|
字符或字符串 |
|
单个字符 |
|
字符向量或字符串数组。类型输出文本的相同的类型 |
可选的运营商
可选标识符,标志,场宽度,精度和亚型运营进一步限定输出文本的格式。
标识符
为了处理函数的输入参数。使用语法
,其中ñ
$ñ
表示函数调用中其他输入参数的位置。
例:( '%3 $ S%2 $ S%1 $ S%2 $ S', 'A', 'B', 'C')
打印输入参数“一个”
,“B”
,“C”
如下:C B A B
。
注意:如果输入参数是数组,则不能使用标识符从该输入参数指定特定的数组元素。
旗帜
|
左对齐。 |
|
总是打印符号字符(+或 - ),用于任何数值。 |
|
在值之前插入一个空格。 |
|
垫与所述值之前的零的字段宽度。 |
|
修改选择的数字转换:
例: |
字段宽度
字符的最小数量打印。字段宽度操作员可以是数字,或星号(*
)来指代一个输入参数。
当您指定*
作为宽度操作领域,其它输入自变量必须提供要打印二者的宽度和一个值。宽度和值可以是一个数值数组内对参数或对。与*
作为字段宽度操作,你可以用不同宽度的打印不同的值。
例:输入参数(intmax ' % 12 d ')
相当于( '%* d',12,intmax)
。
例:输入参数('%*d',[2 10 5 100])
返回'10 100'
,为。分配了两个空间10
和五个空格为One hundred.
。另外,还可以将字段宽度和值指定为多个参数,如( '%* d',2,10,5,100)
。
功能焊盘字段宽度与前值空间,除非另有由标志指定。
精确
对于 |
中位数小数点右边 |
对于 |
的显著位数 |
精度操作员可以是数字,或星号(*
)来指代一个参数。
当您指定*
作为字段精度操作符,其他输入参数必须同时提供要打印的精度和值。精度和值可以是参数对,也可以是数值数组中的对。与*
作为精密运算符,你可以打印不同的值,以不同的精度。
当您指定*。*
作为场宽度和精度运营商,必须指定字段的宽度,精度,和作为三元组的值。
例:输入参数(' % .4f ',π)
相当于( '%。* F',4,PI)
。
例:输入参数(% 6.4 f,π)
相当于( '%。* F',6,4,PI)
。
例:输入参数( '%*。* F',6,4,PI,9,6,实验值(1))
返回3.1416 - 2.718282的
与9
和6
作为字段宽度和精度的输出实验(1)
。
如果指定浮点值的精度运算符超过输入数字数据类型的精度,结果可能不符合输入值到指定的精度。结果取决于您的计算机硬件和操作系统。
亚型
您可以使用一个亚型操作打印浮点值作为其八进制,十进制或十六进制值。亚型运营商紧接在转换角色。下表列出了可以使用亚型转换。
输入值类型 |
亚型和转换字符 |
输出值类型 |
---|---|---|
浮点数 |
|
双精度十六进制,八进制或十进制值 |
|
单精度十六进制,八进制或十进制值 |
文本之前或格式化操作符后
formatSpec
也可以百分号之前包括附加的文字,%GydF4y2Ba
,或转换后的字符。文本可以是:
普通的文本打印。
特殊字符,不能作为普通的文本输入。该表显示了如何表示的特殊字符formatSpec
。
特殊字符 |
表示 |
---|---|
单引号 |
|
百分比的性格 |
|
反斜杠 |
|
报警 |
|
退格 |
|
换页 |
|
新队 |
|
回车 |
|
水平制表 |
|
垂直制表 |
|
其性格的Unicode®数字值可以由十六进制数来表示, |
例: |
字符的Unicode其数值可以通过八进制数来表示, |
例: |
转换的显着特性与格式符
数值转换只打印复数的实部份。
如果您指定的转换不适合的数据,如数值,MATLAB文本转换®覆盖指定的转换,并且使用%E
。
例:'%s' 的
转换π
来3.141593 e + 00
。
如果您将文本转换(无论是%C
或%S
)转换为整数值,MATLAB将对应于有效字符代码的值转换为字符。
例:'%s' 的
转换[65 66 67]
来ABC
。
数据类型:烧焦
|串
A1,...,一
-数字、字符或字符串数组数字、字符或字符串数组。
数据类型:单
|双
|int8
|INT16
|INT32
|Int64的
|uint8
|UINT16
|uint32
|uint64
|合乎逻辑
|烧焦
|串
literalText
-输入文本不带格式商输入的文本,而不格式化操作符,指定为字符向量或标量的字符串。的sprintf
平移以任何转义字符序列literalText
。
数据类型:烧焦
|串
str
——格式化文本格式化文本,以字符向量或字符串标量的形式返回。的类型匹配输出的类型formatSpec
。
ERRMSG
- 错误信息当操作不成功时,以字符向量的形式返回的错误消息。否则,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。
使用注意事项和限制:
该formatSpec
参数必须是恒定的。
在formatSpec
,十六进制数必须在[0 7F]范围内,八进制数必须在[0 177]范围内。
如果所有的输入阵列是恒定的,所述代码生成器评估的sprintf
在编译时调用MATLAB。在这种情况下,代码生成限制的sprintf
不适用,行为的sprintf
在生成的代码中的行为与MATLAB中的行为相同。
如果外部调用不可能,代码生成器为的sprintf
。外在通话是不可能的,当外在的通话将被禁用或当的sprintf
被称为内PARFOR
循环。
的行为的sprintf
在生成的代码相匹配的C编译器行为,而不是在这些情况下,MATLAB行为:
符具有对应的C格式说明,例如格式,%E
或%E
。
该的sprintf
呼叫内PARFOR
循环。
外在通话将被禁用。
不支持这些选项和功能:万博1manbetx
该n美元
重新排序输入值的位置标识符
打印阵列
使用子类型打印浮点数作为其八进制、十进制或十六进制值
您打电话的时候的sprintf
与格式说明%S
时,不能在输入字符向量的中间放置空字符。若要写入空字符,请使用sprintf (fid, % c, char (0))
。
输入参数类型必须在格式类型匹配。例如,如果ñ
是双的,代码生成不允许以下代码:
STR = sprintf的(' % d ',n)
对于代码生成,投第一ñ
为有符号整数类型如int8
。
STR = sprintf的(' % d 'int8 (n))
您打电话的时候的sprintf
一个整数格式说明,整数参数的类型必须是这样的类型,所述目标硬件可以代表作为本地C类型。例如,如果你打电话的sprintf( '%d',Int64的(n))的
,那么目标硬件必须具有支持64位整数的本地C类型。万博1manbetx
动态内存分配必须启用。
您单击对应于该MATLAB命令的链接:
在MATLAB命令窗口中输入它运行的命令。Web浏览器不支持MATLAB的命令。万博1manbetx
您也可以从以下列表中选择网站:
选择最佳的网站性能的中国网站(在中国或英文)。其他MathWorks的国家网站都没有从您的位置访问进行了优化。