共用方式為


scanf 類型欄位字元

下列資訊適用於任何 scanf 函式家族,包括安全性版本,例如 scanf_s。

type 字元是唯一必要格式欄位,他會在任意格式欄位之後出現。 type 字元判斷關聯的引數是解譯為字元、字串或數字。

輸入 scanf 函式的字元

字元

預期的編碼類型

引數類型

在安全版本的大小引數?

c

字元 (Character)。 當使用 scanf 函式,指定單一位元組字元;當使用 wscanf 函式時,指定寬字元。 當 c 被指定時,會讀取通常略過的空白字元。 使用%1s以讀取下一個非空白字元的單一位元組字元;使用%1ws以讀取下一個非空白字元的寬字元。

char 的指標,用於 scanf 函式, wchar_t 的指標,用於 wscanf 函式。

必要項。 大小不包含 null 結束字元的空間。

C

相反的字元。 當使用 scanf 函式,指定寬字元;當使用 wscanf 函式時,指定單一位元組字元。 當 C 被指定時,會讀取通常略過的空白字元。 使用%1s以讀取下一個非空白字元的單一位元組字元;使用%1ws以讀取下一個非空白字元的寬字元。

wchar_t 的指標,用於 scanf 函式, char 的指標,用於 wscanf 函式。

必要項。 引數大小不包含 null 結束字元的空間。

d

十進位整數

int 的指標。

否。

i

整數。 如果輸入字串以「0x」或「0X」開頭,則為十六進位,如果以「0」開頭則為八進位,否則皆為十進位。

int 的指標。

否。

o

八進位整數。

int 的指標。

否。

u

不帶正負號的十進位整數

unsignedint 的指標。

否。

x

十六進位整數

int 的指標。

否。

e, E, f, g, G

包含正負號(+或-),一個或多個的包含十進位點的十進位數字,還有選擇性指數(「e」或「E」)的浮點值會帶有選擇性帶正負號的整數。

float 的指標。

否。

n

沒有從資料流或緩衝區讀取任何輸入。

int的指標,是目前呼叫scanf 函式或wscanf 函式該點的從資料流或緩衝區讀取的已成功儲存的字元數量。

否。

s

字串,由第一個空白字元 (空白字元、定位字元或新行字元) 決定。 若要讀取字串不為空白字元,對方括弧 ([ ]) 的用途組分隔,如 scanf 寬度規格所述。

當使用 scanf 函式,表示單一位元組字元陣列;當使用 wscanf 函式時,則表示寬字元陣列。 在任何情況下,字元陣列必須夠大使輸入欄位自動附加的結束 null 字元能夠存入。

必要項。 包括 null 結束字元的空間的大小。

S

相反的字串,由第一個空白字元 (空白字元、定位字元或新行字元) 決定。 若要讀取字串不為空白字元,對方括弧 ([ ]) 的用途組分隔,如 scanf 寬度規格所述。

當使用 scanf 函式,表示寬字元陣列;當使用 wscanf 函式時,則表示單一位元組字元陣列。 在任何情況下,字元陣列必須夠大使輸入欄位自動附加的結束 null 字元能夠存入。

必要項。 包括 null 結束字元的空間的大小。

a 和 A 規範 (請參閱 printf 類型欄位字元) 在 scanf中是無法使用的。

引數大小應該在套用引數後必要時傳地參數清單。 例如,下列程式碼:

char string1[11], string2[9];
scanf("%10s %8s", string1, 11, string2, 9);

讀取最大長度為10的字串到 string1和最大長度為8的字串到 string2。 因為一定要保留空間給 null 結束字元,緩衝區大小應該至少超過一個寬度規格。

不論是否使用函式的單一位元組字元或寬字元版本,格式字串可以處理單一位元組或寬字元輸入。 因此,請使用格式規範使用scanf 函式和 wscanf以讀取單一位元組或寬字元。

讀取字元

使用這個函式

這些格式規範

單一位元組

scanf 函式

c、hc 或 hC

單一位元組

wscanf 函式

C、hc 或 hC

wscanf 函式

c、lc 或 lC

scanf 函式

C、lc 或 lC

要掃描與 scanf 函式的字串和 wscanf 函式,請使用格式類型規範 s 和 S 的上表而不是 c 或 C。

請參閱

參考

scanf、_scanf_l、wscanf、_wscanf_l