Manpages

______________________________________________________________________________

NAME

format - 按 sprintf 的 式 樣 格 式 化 一 個 字 符 串

總 覽 SYNOPSIS

format formatString ?arg arg ...? _________________________________________________________________

INTRODUCTION

這 個 命 令 按 與 ANSI C sprintf 過 程 相 同 的 方 式 生 成 一 個 格 式 化 了 的 字 符 串 (在 它 的 實 現 中 使 用 了 sprintf)。 FormatString 指 示 如 何 格 式 化 結 果 , 與 sprintf 一 樣 使 用 % 轉 換 指 定 符 (specifier), 如 果 有 增 添 的 參 數 , 則 它 們 提 供 要 被 替 換 到 結 果 中 的 值 。 format 的 返 回 值 是 格 式 化 了 的 字 符 串 。

格 式 化 細 節 DETAILS ON FORMATTING

命 令 按 從 左 到 右 的 檢 索 (scan) formatString 的 方 式 操 作 。 除 了 百 分 號 之 外 的 在 格 式 字 符 串 中 的 每 個 字 符 都 要 添 加 到 結 果 字 符 串 上 。 如 果 字 符 是 一 個 %則 它 不 被 複 制 到 結 果 字 符 串 中 。 轉 而 , 在 % 後 面 的 字 符 被 作 爲 一 個 轉 換 指 定 符 對 待 。 轉 換 指 定 符 控 制 把 下 一 個 連 續 的 (successive) arg 轉 換 成 一 個 特 定 的 格 式 , 並 把 結 果 添 加 到 結 果 字 符 串 中 轉 換 指 定 符 的 位 置 上 。 如 果 在 格 式 字 符 串 中 有 多 個 轉 換 指 定 符 , 則 每 一 個 控 制 一 個 增 添 的 參 數 argformat 命 令 必 須 給 出 足 夠 的 args 來 滿 足 在 formatString 中 的 所 有 轉 換 指 定 符 的 需 要 。 每 個 轉 換 指 定 符 可 以 由 六 部 分 組 成 : 一 個 XPG3 位 置 指 定 符 , 一 系 列 標 誌 (flag), 一 個 最 小 字 段 寬 度 , 一 個 精 度 , 一 個 長 度 修 飾 符 (modifier), 和 一 個 轉 換 字 符 。 除 了 轉 換 字 符 之 外 可 以 省 略 這 些 字 段 中 的 任 何 一 個 。 存 在 的 字 段 必 須 按 上 面 給 出 的 次 序 出 現 。 下 面 的 段 落 依 次 討 論 所 有 這 些 字 段 。 如 果 % 跟 隨 着 一 個 十 進 制 數 值 和 一 個 $, 比 如 “%2$d”, 則 要 轉 換 的 值 不 接 受 下 一 個 順 序 的 參 數 。 轉 而 , 它 接 受 由 這 個 數 字 指 示 的 參 數 , 這 裏 1 對 應 於 第 一 個 arg。 如 果 因 爲 在 指 定 符 中 有 * 字 符 而 轉 換 指 定 符 要 求 多 個 參 數 , 則 使 用 連 續 的 參 數 , 開 始 的 參 數 由 這 個 數 值 給 出 。 這 依 從 XPG3 定 位 指 定 符 約 定 。 如 果 在 formatString 中 有 任 何 定 位 的 指 定 符 則 所 有 指 定 符 必 須 定 位 。 一 個 轉 換 指 定 符 的 第 二 部 分 可 以 按 任 意 次 序 包 含 任 何 下 列 的 標 誌 字 符 :

- 指 定 被 轉 換 的 參 數 在 它 的 字 段 中 左 對 齊

(數 值 一 般 右 對 齊 , 如 果 需 要 的

話 , 有 前 導 的 空 格 )。

+ 指 定 輸 出 的 數 值 必 須 有 符 號 , 即 使 是 正 數 。

space 指 定 如 果 數 值 的 第 一 個 字 符 不 是 一 個 符 號 則 向 數 值 的 開 始 處 添 加 空 格 。

0 指 定 應 當 在 數 值 的 左 側 填 充 零 而 不 是 空 格 。

# 要 求 一 中 替 代 的 輸 出 形 式 。 對 於

oO 轉 換 它 保 證 第 一 個 數 字 總 是 0。 對 於 xX 轉 換 , 除 了 零 之 外 , 在 結 果 的 開 始 處 (分 別 )添 加 0x0X。 對 於 所 有 浮 點 數 轉 換 (eEfg、 和 G) 它 保 證 結 果 總 是 一 個 小 數 點 。 對 於 gG 轉 換 它 指 定 刪 除 尾 部 的 零 。 一 個 轉 換 指 定 符 的 第 三 部 分 是 給 出 這 個 轉 換 的 最 小 字 段 寬 度 的 一 個 數 字 。 它 典 型 的 被 用 來 按 列 表 的 (tabular)輸 出 形 式 排 列 (line up)各 列 (column)。 如 果 被 轉 換 的 參 數 包 含 的 字 符 比 這 個 最 小 字 段 寬 度 少 , 則 填 充 它 來 達 到 這 個 最 小 的 字 段 寬 度 。 填 充 通 常 是 在 被 轉 換 的 參 數 的 左 側 添 加 額 外 的 空 格 , 但 是 可 以 使 用 0- 標 誌 來 分 別 指 定 在 左 側 填 充 零 或 在 右 側 填 充 空 格 。 如 果 指 定 最 小 字 段 寬 度 爲 * 而 不 是 一 個 數 值 , 則 用 給 format 命 令 的 下 一 個 參 數 確 定 最 小 字 段 寬 度 ; 它 必 須 是 一 個 數 值 字 符 串 。 一 個 轉 換 指 定 符 的 第 四 部 分 是 一 個 精 度 , 它 由 一 個 點 號 和 隨 後 的 一 個 數 值 組 成 。 在 不 同 的 轉 換 中 按 不 同 的 方 式 使 用 這 個 數 值 。 對 於 eE、 和 f 轉 換 它 指 定 出 現 在 小 數 點 右 側 的 數 字 的 位 數 。 對 於 gG 轉 換 它 指 定 出 現 的 數 字 的 總 數 , 包 括 在 小 數 點 兩 側 的 數 字 (但 是 , 除 非 指 定 了 # 標 誌 , 省 略 在 小 數 點 後 面 的 尾 部 的 零 )。 對 於 正 數 轉 換 , 它 指 定 輸 出 的 最 小 的 數 字 位 數 (如 果 需 要 的 話 添 加 前 導 的 零 )。 對 於 s 轉 換 它 指 定 輸 出 的 最 大 的 字 符 數 ; 如 果 字 符 串 比 它 長 則 刪 除 尾 部 的 字 符 。 如 果 用 * 而 不 是 一 個 數 值 來 指 定 精 度 , 則 用 給 format 命 令 的 下 一 個 參 數 來 確 定 精 度 ; 它 必 須 是 一 個 數 值 字 符 串 。 一 個 轉 換 指 定 符 的 第 五 部 分 是 一 個 長 度 修 飾 符 , 它 必 須 是 hl。 如 果 它 是 h 則 指 定 數 值 值 在 轉 換 之 前 必 須 被 截 斷 (truncate)成 16位 值 。 這 個 選 項 很 少 有 用 。 忽 略 l 修 飾 符 。 一 個 轉 換 指 定 符 的 最 後 一 部 分 是 確 定 進 行 那 種 轉 換 的 一 個 字 母 字 符 。 當 前 支 持 下 列 轉 換 字 符 :

d 把 整 數 轉 換 成 有 符 號 的 十 進 制 字 符 串 。

u 把 整 數 轉 換 成 無 符 號 的 十 進 制 字 符 串 。

i 把 整 數 轉 換 成 有 符 號 的 十 進 制 字 符 串 ; 整 數 可 以 是 十 進 制 的 , 八 進 制 的

(有 一 個 前 導 的 0) 或 十 六 進 制 的 (有 一 個 前 導 的 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 轉 換 。 省 略 尾 部 的 零 和 尾 部 的 小 數 點 。

% 不 轉 換 : 只 是 插 入

%

數 值 轉 換 , 被 轉 換 的 參 數 必 須 是 一 個 正 數 或 浮 點 數 字 符 串 ; format 把 參 數 轉 換 成 二 進 制 接 着 依 照 轉 換 指 定 符 把 它 再 轉 換 成 一 個 字 符 串 。

與 ANSI SPRINTF 的 區 別 DIFFERENCES FROM ANSI SPRINTF

除 了 下 列 區 別 之 外 , format 命 令 的 行 爲 與 ANSI C sprintf 過 程 相 同 :

[1] 當 前 不 支 持

%p%n 指 定 符 。

[2] 對 於

%c 轉 換 , 參 數 必 須 是 一 個 十 進 制 字 符 串 , 它 將 被 轉 換 成 相 應 的 字 符 值 。

[3] 忽 略

l 修 飾 符 ; 轉 換 整 數 值 總 是 有 如 沒 有 修 飾 符 存 在 , 而 轉 換 實 數 值 總

是 有 如 存 在 l 修 飾 符 (例 如 , 使 用 類 型 double 作 爲 內 部 表 示 )。 如 果 指 定 了 h 修 飾 符 則 在 轉 換 前 截 斷 整 數 值 。

參 見 SEE ALSO

sprintf(3), string(n)

關 鍵 字 KEYWORDS

conversion specifier, format, sprintf, string, substitution

[中 文 版 維 護 人 ]

寒 蟬 退 士

[中 文 版 最 新 更 新 ]

2001/08/29

《 中 國 Linux 論 壇 man 手 冊 頁 翻 譯 計 劃 》 :

http://cmpp.linuxforum.net

本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。 中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh