Provided by:
manpages-zh_1.5.1-1_all 
NAME
scan - 使用 sscanf 式樣的轉換指定符分析字符串
` SYNOPSIS
scan string format ?varName varName ...?
_________________________________________________________________
INTRODUCTION
這茤R令用與 ANSI C sscanf
過程相同的方式從輸入字符串中分析字段並返回完成的轉換數目的總-
p,如果在任何轉換被完成之前到達了輸入字符串的結束則返回 -1。String
給出n被分析的輸入而 format 指示如何分析它,使用與 sscanf 相同的 %
轉換指定符。每 varName 給出一蚥僆q的名字;在從 string 中檢索出一-
茼r段的時唌A結果被轉換回一茼r符串並賦僧衈釭瘍僆q。 如果未指定 varName |
變量,則 scan 在行內(inline)方式下工作,返回的數據將是一- |
茼C表而不存儲在變量中。在行內方式下,如果在任何轉換被完成之前到達了輸入字符串的結束則返回,則返回一-|
茠臟瞗C
` DETAILS ON SCANNING
Scan 操作一起檢索 string 和 format。如果在 format 的下一茼r符是一-
茠臟r符(blank)或跳格字符(tab)則它匹配在 string 中任何數目(包括零-
)的白空格字符。 如果它不是一 % 字符則它必須匹配 string 的下一-
茼r符。當在 format 中遇到一 % 的時唌A它指示一蚋鉥垂定符的開始。 一-
蚋鉥垂定符包括 % 和後悸熙怞h四茼r段: 一 *,它指示丟棄被轉換出的-
茪ㄛO賦嚃僆q中;一 XPG3 位置指定符;一蚍示最大的字段寬度;和一-
蚋鉥咻r符。除了轉換字符之外所有這些字段都是可選的。存在的字段必須按照上-
接馴X的次序出現。
當 scan 在 format 中發現一蚋鉥垂定符的時唌A它漸跳過 string
中的所有白空格(除非指定符是 [ 或
c)。接著它依據轉換指定符轉換下一組輸入字符,並把結果存儲到用給 scan
的下一荌捊馴X的變量中。
如果 % 跟隨著一茪Q進制數和一 $,比如``%2$d'',則使用的變量不取自下一-
荈陽滌捊C而是取自用這蚍r指定的參數,這裏 1 對應著第一
varName。如果在 format
中有任何位置指定符則所有指定符都必須被指定位置。每茼b參數列表上的
varName 必須準確的對應於一蚋鉥垂定符,否則生成一-
蚇欞~。在行內方式下,任何位置指定符可以指定最多一次,並且用空串填充空位置指定符。
支持下列轉換字符:
d 輸入字段必須是一茪Q進制整數。它被讀入並作為一-
茪Q進制字符串存儲到變量中。
o 輸入字段必須是一茪K進制整數。它被讀入並作為一-
茪K進制字符串存儲到變量中。 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 輸入字段必須是一茪Q六進制整數。它被讀入並作為一-
茪Q六進制字符串存儲到變量中。 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 輸入字段必須是一茪Q進制整數。它被讀入並作為一-
茧L符號十進制字符串存儲到變量中。
i 輸入字段必須是一蚞蒱C使用與 expr 中描-
z的相同方式確定基數(base)(例如,十進制、八進制、或十六進制)。-
Q作為一茪Q進制字符串存儲到變量中。
c 讀入一茬璊@的字符並把它的二進制@為一-
茪Q進制字符串存儲到變量中。在這種情況下不跳過初始的白空格,這樣輸入字段可以是一-
茈晡躓璁r符。這蚋鉥咫ㄕP於 ANSI
標準的地方是輸入字段總是由一-
茬璊@字段組成並且不可以指定字段寬度。
s 輸入字段由到下一-
茈晡躓甈陘謇漫狾釵r符組成;把這些字符複製到變量中。
e 或 f 或 g
輸入字段必須是一荅B點數,其組成是一茈i選的正t號,一-
茈i能有小數點的十進制數字的字符串,和一茈i選的指數,它由一 e
或 E 並跟隨著一茈i選的正t號和一-
茪Q進制數字的字符串組成。它被讀入並作為一-
荅B點數存儲到變量中。
[chars] 輸入字段由任何數目的在 chars
中的字符組成。把匹配的字符串存儲到變量中。如果在方括號之間的第一-
茼r符是] 則它被作為 chars 的一部分來對待而不是這-
茼r符集合的閉合方括號。 如果 chars 包括一 a-b
形式的序列,則匹配在 a 和 b
之間(包括二者)的任何字符。如果在方括號之間的第一茤帠怮嶀@-
茼r符是一 -,則它被作為 chars 的一部分來對待而不是指示一-
S圍。
[^chars] 輸入字段由任何數目的不在 chars
中的字符組成。把匹配的字符串存儲到變量中。如果緊隨在 ^
後悸漲r符是一 ] 則它被作為 chars 的一部分來對待而不是這-
茼r符集合的閉合方括號。 如果chars 包括一 a-b
形式的序列,則從字符的集合中排除在 a 和 b
之間(包括二者)的任何字符。如果在方括號之間的第一茤帠怮嶀@-
茼r符是一 -,則它被作為 chars
的一部分來對待而不是指示一紎圍。
n 不從輸入字符串中消耗輸入。而是把到現在為止從輸入字符串中檢索到的字符總數存儲到變量中。
對於一蚋鉥垮q輸入中讀的字符數目應該是對特定轉換最大的數目(例如,對 %d
是盡可能多的十進制數字,對於 %o
是盡可能多的八進制數字,以此類推)。給一茧鼎w轉換的輸入n麼終止於遇到一-
茈晡躓熡麼終止於達到了最大的字段寬度,只-
n其中一種情況滿足就終止。如果在轉換指定符中存在一 * 則不賦-
僆q並且不消耗下一蚗阯蟆捊C
PANSI SSCANFO DIFFERENCES FROM ANSI SSCANF
除了下列區別之外 scan 命令的行為與 ANSI C sscanf 過程的行為相同:
[1] 當前不支持 %p 轉換指定符。
[2] 對於 %c 轉換,把一茬璊@字符轉換成一茪Q進制字符串,接著把它賦-
僧衈釭 varName;對於這蚋鉥咫ㄞ鄎定字段寬度。
[3] 忽略 l、h、和 L 袡3禳F轉換整數`是如同不存在-
袡3禳A而轉換實數`是如同存在 l
袡3(就是說,對於內部表示使用類型 double)。
[4] 如果在任何轉換被完成之前到達了輸入字符串的結束並且未給出變量,則返回一-|
茠臟瞗C
SEE ALSO
format(n), sscanf(3)
r KEYWORDS
conversion specifier, parse, scan
[]
Hhh
[]
2001/11/07
m Linux manUpn:
http://cmpp.linuxforum.net