Manpages

______________________________________________________________________________

NAME

scan - 使 用 sscanf 式 样 的 转 换 指 定 符 分 析 字 符 串

总 览 SYNOPSIS

scan string format ?varName varName ...? _________________________________________________________________

INTRODUCTION

这 个 命 令 用 与 ANSI C sscanf 过 程 相 同 的 方 式 从 输 入 字 符 串 中 分 析 字 段 并 返 回 完 成 的 转 换 数 目 的 总 计 , 如 果 在 任 何 转 换 被 完 成 之 前 到 达 了 输 入 字 符 串 的 结 束 则 返 回 -1。 String 给 出 要 被 分 析 的 输 入 而 format 指 示 如 何 分 析 它 , 使 用 与 sscanf 相 同 的 % 转 换 指 定 符 。 每 个 varName 给 出 一 个 变 量 的 名 字 ; 在 从 string 中 检 索 出 一 个 字 段 的 时 候 , 结 果 被 转 换 回 一 个 字 符 串 并 赋 值 给 相 应 的 变 量 。 如 果 未 指 varName 变 量 , 则 scan 在 行 内 (inline)方 式 下 工 作 , 返 回 的 数 据 将 是 一 个 列 表 而 不 存 储 在 变 量 中 。 在 行 内 方 式 下 , 如 果 在 任 何 转 换 被 完 成 之 前 到 达 了 输 入 字 符 串 的 结 束 则 返 回 , 则 返 回 一 个 空 串 。

检 索 细 节 DETAILS ON SCANNING

Scan 操 作 一 起 检 索 stringformat。 如 果 在 format 的 下 一 个 字 符 是 一 个 空 字 符 (blank)或 跳 格 字 符 (tab)则 它 匹 配 在 string 中 任 何 数 目 (包 括 零 个 )的 白 空 格 字 符 。 如 果 它 不 是 一 个 % 字 符 则 它 必 须 匹 配 string 的 下 一 个 字 符 。 当 在 format 中 遇 到 一 个 % 的 时 候 , 它 指 示 一 个 转 换 指 定 符 的 开 始 。 一 个 转 换 指 定 符 包 括 % 和 后 面 的 最 多 四 个 字 段 : 一 个 *, 它 指 示 丢 弃 被 转 换 出 的 值 而 不 是 赋 值 到 变 量 中 ; 一 个 XPG3 位 置 指 定 符 ; 一 个 数 指 示 最 大 的 字 段 宽 度 ; 和 一 个 转 换 字 符 。 除 了 转 换 字 符 之 外 所 有 这 些 字 段 都 是 可 选 的 。 存 在 的 字 段 必 须 按 照 上 面 给 出 的 次 序 出 现 。 当 scanformat 中 发 现 一 个 转 换 指 定 符 的 时 候 , 它 首 先 跳 过 string 中 的 所 有 白 空 格 (除 非 指 定 符 是 [c)。 接 着 它 依 据 转 换 指 定 符 转 换 下 一 组 输 入 字 符 , 并 把 结 果 存 储 到 用 给 scan 的 下 一 个 参 数 给 出 的 变 量 中 。 如 果 % 跟 随 着 一 个 十 进 制 数 和 一 个 $, 比 如 ’’%2$d’’, 则 使 用 的 变 量 不 取 自 下 一 个 顺 序 的 参 数 。 而 是 取 自 用 这 个 数 字 指 定 的 参 数 , 这 里 1 对 应 着 第 一 个 varName。 如 果 在 format 中 有 任 何 位 置 指 定 符 则 所 有 指 定 符 都 必 须 被 指 定 位 置 。 每 个 在 参 数 列 表 上 的 varName 必 须 准 确 的 对 应 于 一 个 转 换 指 定 符 , 否 则 生 成 一 个 错 误 。 在 行 内 方 式 下 , 任 何 位 置 指 定 符 可 以 指 定 最 多 一 次 , 并 且 用 空 串 填 充 空 位 置 指 定 符 。 支 持 下 列 转 换 字 符 :

d 输 入 字 段 必 须 是 一 个 十 进 制 整 数 。 它 被 读 入 并 作 为 一 个 十 进 制 字 符 串 存 储 到 变 量 中 。

o 输 入 字 段 必 须 是 一 个 八 进 制 整 数 。 它 被 读 入 并 作 为 一 个 八 进 制 字 符 串 存 储 到 变 量 中 。

If the value exceeds MAX_INT (017777777777 on platforms using 32-bit integers), it will be truncated to a signed integer. Hence, 037777777777 will appear as -1 on a 32-bit machine.

x 输 入 字 段 必 须 是 一 个 十 六 进 制 整 数 。 它 被 读 入 并 作 为 一 个 十 六 进 制 字 符 串 存 储 到 变 量 中 。

If the value exceeds MAX_INT (0x7FFFFFFF on platforms using 32-bit integers), it will be truncated to a signed integer. Hence, 0xFFFFFFFF will appear as -1 on a 32-bit machine.

u 输 入 字 段 必 须 是 一 个 十 进 制 整 数 。 它 被 读 入 并 作 为 一 个 无 符 号 十 进 制 字 符 串 存 储 到 变 量 中 。

i 输 入 字 段 必 须 是 一 个 整 数 。 使 用 与

expr 中 描 述 的 相 同 方 式 确 定 基 数 (base)(例 如 , 十 进 制 、 八 进 制 、 或 十 六 进 制 )。 值 被 作 为 一 个 十 进 制 字 符 串 存 储 到 变 量 中 。

c 读 入 一 个 单 一 的 字 符 并 把 它 的 二 进 制 值 作 为 一 个 十 进 制 字 符 串 存 储 到 变 量 中 。 在 这 种 情 况 下 不 跳 过 初 始 的 白 空 格 , 这 样 输 入 字 段 可 以 是 一 个 白 空 格 字 符 。 这 个 转 换 不 同 于

ANSI 标 准 的 地 方 是 输 入 字 段 总 是 由 一 个 单 一 字 段 组 成 并 且 不 可 以 指 定 字 段 宽 度 。

s 输 入 字 段 由 到 下 一 个 白 空 格 为 止 的 所 有 字 符 组 成 ; 把 这 些 字 符 复 制 到 变 量 中 。

efg 输 入 字 段 必 须 是 一 个 浮 点 数 , 其 组 成 是 一 个 可 选 的 正 负 号 , 一 个 可 能 有 小 数 点 的 十 进 制 数 字 的 字 符 串 , 和 一 个 可 选 的 指 数 , 它 由 一 个 eE 并 跟 随 着 一 个 可 选 的 正 负 号 和 一 个 十 进 制 数 字 的 字 符 串 组 成 。 它 被 读 入 并 作 为 一 个 浮 点 数 存 储 到 变 量 中 。

[chars] 输 入 字 段 由 任 何 数 目 的 在

chars 中 的 字 符 组 成 。 把 匹 配 的 字 符 串 存 储

到 变 量 中 。 如 果 在 方 括 号 之 间 的 第 一 个 字 符 是 ] 则 它 被 作 为 chars 的 一 部 分 来 对 待 而 不 是 这 个 字 符 集 合 的 闭 合 方 括 号 。 如 果 chars 包 括 一 个 a-b 形 式 的 序 列 , 则 匹 配 在 ab 之 间 (包 括 二 者 )的 任 何 字 符 。 如 果 在 方 括 号 之 间 的 第 一 个 或 最 后 一 个 字 符 是 一 个 -, 则 它 被 作 为 chars 的 一 部 分 来 对 待 而 不 是 指 示 一 个 范 围 。

[^chars] 输 入 字 段 由 任 何 数 目 的 不 在

chars 中 的 字 符 组 成 。 把 匹 配 的 字 符 串 存

储 到 变 量 中 。 如 果 紧 随 在 ^ 后 面 的 字 符 是 一 个 ] 则 它 被 作 为 chars 的 一 部 分 来 对 待 而 不 是 这 个 字 符 集 合 的 闭 合 方 括 号 。 如 果 chars 包 括 一 个 a-b 形 式 的 序 列 , 则 从 字 符 的 集 合 中 排 除 在 ab 之 间 (包 括 二 者 )的 任 何 字 符 。 如 果 在 方 括 号 之 间 的 第 一 个 或 最 后 一 个 字 符 是 一 个 -, 则 它 被 作 为 chars 的 一 部 分 来 对 待 而 不 是 指 示 一 个 范 围 。

n 不 从 输 入 字 符 串 中 消 耗 输 入 。 而 是 把 到 现 在 为 止 从 输 入 字 符 串 中 检 索 到 的 字 符 总 数 存 储 到 变 量 中 。 对 于 一 个 转 换 从 输 入 中 读 的 字 符 数 目 应 该 是 对 特 定 转 换 最 大 的 数 目

(例 如 , 对 %d 是 尽 可 能 多 的 十 进 制 数 字 , 对 于 %o 是 尽 可 能 多 的 八 进 制 数 字 , 以 此 类 推 )。 给 一 个 给 定 转 换 的 输 入 要 么 终 止 于 遇 到 一 个 白 空 格 要 么 终 止 于 达 到 了 最 大 的 字 段 宽 度 , 只 要 其 中 一 种 情 况 满 足 就 终 止 。 如 果 在 转 换 指 定 符 中 存 在 一 个 * 则 不 赋 值 变 量 并 且 不 消 耗 下 一 个 检 索 参 数 。

与 ANSI SSCANF 的 区 别 DIFFERENCES FROM ANSI SSCANF

除 了 下 列 区 别 之 外 scan 命 令 的 行 为 与 ANSI C sscanf 过 程 的 行 为 相 同 :

[1] 当 前 不 支 持

%p 转 换 指 定 符 。

[2] 对 于

%c 转 换 , 把 一 个 单 一 字 符 转 换 成 一 个 十 进 制 字 符 串 , 接 着 把 它 赋 值 给 相 应 的 varName; 对 于 这 个 转 换 不 能 指 定 字 段 宽 度 。

[3] 忽 略

lh、 和 L 修 饰 符 ; 转 换 整 数 值 总 是 如 同 不 存 在 修 饰 符 , 而 转 换

实 数 值 总 是 如 同 存 在 l 修 饰 符 (就 是 说 , 对 于 内 部 表 示 使 用 类 型 double)。

[4] 如 果 在 任 何 转 换 被 完 成 之 前 到 达 了 输 入 字 符 串 的 结 束 并 且 未 给 出 变 量 , 则 返 回 一 个 空 串 。

参 见 SEE ALSO

format(n), sscanf(3)

关 键 字 KEYWORDS

conversion specifier, parse, scan

[中 文 版 维 护 人 ]

寒 蝉 退 士

[中 文 版 最 新 更 新 ]

2001/11/07

《 中 国 Linux 论 坛 man 手 册 页 翻 译 计 划 》 :

http://cmpp.linuxforum.net

本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。 中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh