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