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。