Provided by:
manpages-zh_1.5.1-1_all 
NAME
format - 按 sprintf 的式樣格式化一茼r符串
` SYNOPSIS
format formatString ?arg arg ...?
_________________________________________________________________
INTRODUCTION
這茤R令按與ANSI C sprintf 過程相同的方式生成一-
荇璁﹞F的字符串(在它的實現中使用了 sprintf)。FormatString
指示如何格式化結果,與 sprintf 一樣使用 %
轉換指定符(specifier),如果有增添的參數,則它抴ㄗ峮被替換到結果中的-
Cformat 的返回O格式化了的字符串。
` DETAILS ON FORMATTING
命令按從左到右的檢索(scan) formatString
的方式操作。除了百分號之外的在格式字符串中的每茼r符都-
n添加到結果字符串上。如果字符是一
%則它不被複製到結果字符串中。轉而,在 % 後悸漲r符被作為一-
蚋鉥垂定符對待。轉換指定符控制把下一茬s續的(successive) arg 轉換成一-
荅S定的格式,並把結果添加到結果字符串中轉換指定符的位置上。如果在格式字符串中有多-
蚋鉥垂定符,則每一荓惆謅@蚍W添的參數 arg。format 命令必須給出足夠的
args 來滿足在 formatString 中的所有轉換指定符的需n。
每蚋鉥垂定符可以由六部分組成: 一 XPG3
位置指定符,一系列標誌(flag),一茬怳p字段寬度,一蚨諞蛂A一茠曮-
袡3(modifier),和一-
蚋鉥咻r符。除了轉換字符之外可以省略這些字段中的任何一-
荂C存在的字段必須按上接馴X的次序出現。下悸漪q落依次討論所有這些字段。
如果 % 跟隨著一茪Q進制數M一 $, 比如「%2$d」,則n轉換的-
ㄠ筐下一荈陽滌捊C轉而,它接受由這蚍r指示的參數,這裏 1
對應於第一 arg。如果因為在指定符中有 * 字符而轉換指定符n求多-
荌捊A則使用連續的參數,開始的參數由這蚍給出。這依從 XPG3
定位指定符約定。如果在 formatString
中有任何定位的指定符則所有指定符必須定位。
一蚋鉥垂定符的第二部分可以按任意次序包含任何下列的標誌字符:
- 指定被轉換的參數在它的字段中左對齊(數@般右對齊,如果需-
n的話,有前導的空格)。
+ 指定輸出的數眸椰陴顫飽A即使是正數。
space 指定如果數熔臚@茼r符不是一茞顫鼠h向數熄}始處添加空格。
0 指定應當在數漸狐撰韖R零而不是空格。
# n求一中替代的輸出形式。對於 o 和 O 轉換它保証第一蚍r總是
0。對於 x 或 X 轉換,除了零之外,在結果的開始處(分別)添加 0x
或 0X。對於所有浮點數轉換(e、E、f、g、和 G) 它保証結果總是一-
茪p數點。對於 g 和 G 轉換它指定刪除尾部的零。
一蚋鉥垂定符的第三部分是給出這蚋鉥囿熙怳p字段寬度的一-
蚍r。它典型的被用來按列表的(tabular)輸出形式排列(line
up)各列(column)。如果被轉換的參數包含的字符比這-
茬怳p字段寬度少,則填充它來達到這-
茬怳p的字段寬度。填充通常是在被轉換的參數的左側添加額外的空格,但是可以使用
0和 -
標誌來分別指定在左側填充零或在右側填充空格。如果指定最小字段寬度為 *
而不是一蚍,則用給 format 命令的下一-
荌捊T定最小字段寬度;它必須是一蚍字符串。
一蚋鉥垂定符的第四部分是一蚨諞蛂A它由一蚋I號和隨後的一蚍-
捰芋C在不同的轉換中按不同的方式使用這蚍。對於 e、E、和 f
轉換它指定出現在小數點右側的數字的位數。對於 g 和 G
轉換它指定出現的數字的總數,包括在小數點兩側的數字(但是,除非指定了 #
標誌,省略在小數點後-
悸漣應〞犒s)。對於正數轉換,它指定輸出的最小的數字位數(如果需-
n的話添加前導的零)。對於 s
轉換它指定輸出的最大的字符數;如果字符串比它長則刪除尾部的字符。如果用
* 而不是一蚍來指定精度,則用給 format 命令的下一-
荌捊蚑T定精度;它必須是一蚍字符串。
一蚋鉥垂定符的第仇﹞嶼O一茠曮跂飾符,它必須是 h 或 l。如果它是 h
則指定數在轉換之前必須被截斷(truncate)成16位C這蚇龠筍雂皉野峞C忽略
l 袡3禳C
一蚋鉥垂定符的最後一部分是確定進行那種轉換的一-
茼r母字符。當前支持下列轉換字符:
d 把整數轉換成有符號的十進制字符串。
u 把整數轉換成無符號的十進制字符串。
i 把整數轉換成有符號的十進制字符串;整數可以是十進制的,八進制的(有一-
茷e導的 0) 或十六進制的(有一茷e導的 0x)。
o 把整數轉換成無符號八進制字符串。
x or X 把整數轉換成無符號十六進制字符串,對 x
使用數字「0123456789abcdef」而對 X 使用數字
「0123456789ABCDEF」。 |
c ||
把整數轉換成它代表的 Unicode 字符。
s 不轉換,只是插入字符。
f 浮點數轉換成有符號的 xx.yyy 形式的十進制字符串,這裏的 y
的位數由精度確定(預設: 6)。如果精度是 0 則不輸出小數點。
e or e 把浮點數轉換成 x.yyye±zz 形式的科學記數法,這裏的 y
的位數由精度確定(預設: 6)。如果精度是 0
則不輸出小數點。如果使用 E 式樣則輸出 E 而不是 e。
g or G 如果指數小於 -4 或大於等於精度,則把富點數按 %e 或 %E
來轉換。否則按 %f 轉換。省略尾部的零和尾部的小數點。
% 不轉換: 只是插入 %。
數鉥哄A被轉換的參數必須是一茈蕉巹B點數字符串;format
把參數轉換成二進制接著依照轉換指定符把它再轉換成一茼r符串。
P ANSI SPRINTFO DIFFERENCES FROM ANSI SPRINTF
除了下列區別之外,format 命令的行為與 ANSI C sprintf 過程相同:
[1] 當前不支持 %p 和 %n 指定符。
[2] 對於 %c 轉換,參數必須是一-
茪Q進制字符串,它將被轉換成相應的字符C
[3] 忽略 l 袡3禳F轉換整數`是有如沒有袡3臟s在,而轉換實數-
`是有如存在 l 袡3(例如, 使用類型 double
作為內部表示)。如果指定了 h 袡3贖h在轉換前截斷整數C
SEE ALSO
sprintf(3), string(n)
r KEYWORDS
conversion specifier, format, sprintf, string, substitution
[]
Hhh
[]
2001/08/29
m Linux manUpn:
http://cmpp.linuxforum.net