scanf 型別功能變數字元
下列的資訊適用於任何scanf系列的函式,包括安全的版本中,例如scanf_s。
type字元是唯一的必要的格式欄位 ; 它會出現選擇性的格式中的任何欄位之後。 type字元會決定是否相關聯的引數會被解譯為字元、 字串或數字。
Scanf 函式的型別字元
字元 |
預期輸入類型 |
引數型別 |
Size 引數,在 [安全的版本嗎? |
---|---|---|---|
c |
字元 (Character)。 搭配使用時scanf的函式,以指定單位元組字元。 搭配使用時wscanf的函式,以指定萬用字元。 泛空白字元,通常會被略過讀取時c所指定。 若要讀取下一個 non–white 空間半形字元,請使用%1s。 若要讀取下一個 non–white-空間寬字元,請使用%1ws。 |
指標char搭配使用時scanf函式、 指標wchar_t搭配使用時wscanf函式。 |
必要項。 大小並不會包含 null 結束字元的空間。 |
C |
相對大小的字元。 搭配使用時scanf的函式,以指定萬用字元。 搭配使用時wscanf的函式,以指定單位元組字元。 泛空白字元,通常會被略過讀取時C所指定。 若要讀取下一個 non–white 空間半形字元,請使用%1s。 若要讀取下一個 non–white-空間寬字元,請使用%1ws。 |
指標wchar_t搭配使用時scanf函式、 指標char搭配使用時wscanf函式。 |
必要項。 Size 引數不包含 null 結束字元的空間。 |
d |
十進位整數。 |
指標int。 |
否。 |
i |
整數。 如果輸入的字串以"0x"為開頭的十六進位或"0 X",如果字串以"0",否則十進位開頭八進位數。 |
指標int。 |
否。 |
o |
八進位的整數。 |
指標int。 |
否。 |
u |
不帶正負號的十進位整數。 |
Pointer to 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 運作,表示單一 byte–character 的陣列。 不論是哪一種情況中,必須夠大的輸入的欄位,再加上結束的 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。