Provided by: manpages-zh_1.5.1-1_all bug

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添的參數  argformat   命令必須給出足夠的
       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求一中替代的輸出形式。對於 oO  轉換它保証第一蚍r總是
                 0。對於  xX 轉換,除了零之外,在結果的開始處(分別)添加 0x0X。對於所有浮點數轉換(eEfg、和 G) 它保証結果總是一-
                 茪p數點。對於 gG 轉換它指定刪除尾部的零。

       一蚋鉥垂定符的第三部分是給出這蚋鉥囿熙怳p字段寬度的一-
       蚍r。它典型的被用來按列表的(tabular)輸出形式排列(line
       up)各列(column)。如果被轉換的參數包含的字符比這-
       茬怳p字段寬度少,則填充它來達到這-
       茬怳p的字段寬度。填充通常是在被轉換的參數的左側添加額外的空格,但是可以使用
       0-
       標誌來分別指定在左側填充零或在右側填充空格。如果指定最小字段寬度為    *
       而不是一蚍,則用給                 format                 命令的下一-
       荌捊T定最小字段寬度;它必須是一蚍字符串。

       一蚋鉥垂定符的第四部分是一蚨諞蛂A它由一蚋I號和隨後的一蚍-
       捰芋C在不同的轉換中按不同的方式使用這蚍。對於      eE、和       f
       轉換它指定出現在小數點右側的數字的位數。對於        gG
       轉換它指定出現的數字的總數,包括在小數點兩側的數字(但是,除非指定了   #
       標誌,省略在小數點後-
       悸漣應〞犒s)。對於正數轉換,它指定輸出的最小的數字位數(如果需-
       n的話添加前導的零)。對於                                              s
       轉換它指定輸出的最大的字符數;如果字符串比它長則刪除尾部的字符。如果用
       *        而不是一蚍來指定精度,則用給       format        命令的下一-
       荌捊蚑T定精度;它必須是一蚍字符串。

       一蚋鉥垂定符的第仇﹞嶼O一茠曮跂飾符,它必須是  hl。如果它是   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  而不是 eg 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