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