printf 型別功能變數字元
格式規格, type 字元是指定的轉換規範對應引數是否要解譯成字元、字串、指標、整數或浮點數。 type 字元是唯一需要的格式規格欄位,因此,在所有選擇性欄位之後出現。
遵循格式字串的引數會根據對應的 type 字元和選擇性的 大小 前置解譯。 字元型別的 char 和 wchar_t 轉換指定使用 c 或 C,使用 s 或 S,因此,單一位元組、多位元組或寬字串指定,格式化函式使用。 指定使用 c ,而 s 會解譯為 char 和 char* 由 printf 函式家族的字元和字串引數,或者為 wchar_t 和 wchar_t* 由 wprintf 函式家族。 指定使用 C ,而 S 會解譯為 wchar_t 和 wchar_t* 由 printf 函式家族的字元和字串引數,或者為 char 和 char* 由 wprintf 函式家族。
使用 d、 i、 o、 u、 x和 X,整數型別 (例如 short、 int、 long、 long long及 unsigned 變數,指定。 使用 a、 A、 e、 E、 f、 g和 G,浮點型別 (例如 float、 double和 long double,指定。 根據預設,,除非 size 欄位長度前置修改它們,整數引數強制為 int 型別,因此,浮點引數強制轉型成 double。 在 64 位元系統上, int 是 32 位元值;因此, 64 位元整數截斷,並且為輸出格式,除非使用 ll 或 I64size 前置詞。 由 p 使用指定預設長度為平台的指標型別。
注意事項 |
---|
C、 S和 Z 型別字元和 c 和 s 型別字元的行為,以及搭配 printf 和 wprintf 函式,是 Microsoft 擴充功能不是 ANSI 相容。Visual C++ 不支援 F 型別字元。 |
printf 輸入欄位字元
型別字元 |
引數 |
輸出格式 |
---|---|---|
c |
字元 |
當使用 printf 函式,指定單一位元組字元;當使用 wprintf 函式,指定寬字元。 |
C |
字元 |
當使用 printf 函式,指定寬字元;當使用 wprintf 函式,指定單一位元組字元。 |
d |
Integer |
帶正負號的十進位整數。 |
i |
Integer |
帶正負號的十進位整數。 |
o |
Integer |
不帶正負號的八進位的整數。 |
u |
Integer |
不帶正負號的十進位整數。 |
x |
Integer |
未帶正負號十六進位整數;使用「abcdef」。 |
X |
Integer |
未帶正負號十六進位整數;使用「ABCDEF」。 |
e |
浮點 |
表單的帶正負號值–] [d.dddd e [標記]dd[d]d 是一個十進位數字中, dddd 是一個或多個十進位數字, dd[d] 是兩個或三個十進位數字是以指數的 輸出格式 和大小,因此, 標記 為 + 或 -。 |
E |
浮點 |
與 e 格式,除了 E 而非 e 引入指數。 |
f |
浮點 |
表單的帶正負號值–] [dddd.dddd,其中 dddd 是一個或多個十進位數字。 小數點前面的位數取決於數字的大小,小數點後面的位數則取決於要求的精確度。 |
g |
浮點 |
帶正負號的值在 f 或 e 格式顯示,哪種格式對所指定值和精確度最為精簡。 e 格式,只有在值的指數小於 4 或大於或等於 precision 引數時,使用。 結尾的零截斷,因此,小數點,才會出現一或多個數字後面。 |
G |
浮點 |
與 g 格式,但是有一點例外,就是 E,而不是 e,引入指數 (適當的話)。 |
a |
浮點 |
表單的簽署的十六進位雙精度浮點數值 [−]0xh.hhhhp±dd,其中 h.hhhh 是 十六進位數字 (使用小寫字母) 尾數和 dd 是指數的一或多個數字。 這個精確度的時間點之後指定的位數。 |
A |
浮點 |
表單的簽署的十六進位雙精度浮點數值 [−]0Xh.hhhhP±dd,其中 h.hhhh 是 十六進位數字 (使用大寫字母) 尾數和 dd 是指數的一或多個數字。 這個精確度的時間點之後指定的位數。 |
n |
out 整數的指標。 |
目前已寫入資料流或緩衝區已成功地寫入的字元數。 這個值在位址為引數的整數儲存。 請參閱本安全性提示本文。 |
p |
指標類型 |
顯示引數為十六進位數字的位址。 |
s |
字串 |
當使用 printf 函式,指定單一位元組或多位元組字元字串;當使用 wprintf 函式,指定寬字元字串。 字元會顯示由第一個 Null 字元或直到 precision 值為止。 |
S |
字串 |
當使用 printf 函式,指定寬字元字串;當使用 wprintf 函式,指定單一位元組或多位元組字元字串。 字元會顯示由第一個 Null 字元或直到 precision 值為止。 |
Z |
ANSI_STRING 或 UNICODE_STRING 結構。 |
當或 ANSI_STRING UNICODE_STRING 結構的位址傳遞做為引數時,顯示在緩衝區包含指向結構的 Buffer 欄位的字串。 使用 w 的長度修飾詞器前置指定 UNICODE_STRING 引數 (例如, %wZ。 必須設定結構的 Length 欄位為長度,以位元組為單位),字串。 必須設定結構的 MaximumLength 欄位為長度,以位元組為單位),緩衝區。 通常, Z 型別字元在偵錯函式使用一個格式規格,例如 dbgPrint 和 kdPrint的驅動程式方面所使用。 |
如果對應於浮點轉換規範的引數是無限,不定或 NaN,下表列出格式化輸出。
值 |
Output |
---|---|
+ 無限 |
1.#INF亂數。 |
– Infinity |
– 1.#INF亂數。 |
無法判斷 (和安靜 NaN 相同) |
digit.#INDrandom-digits |
NaN |
digitrandom 數目。. #NAN |
注意事項 |
---|
如果對應於 %Z,或者引數對應至 %s 或 %S引數中的 Buffer 欄位,為 null 指標, 「(null)」隨即顯示。 |
注意事項 |
---|
在所有指數格式,指數字的預設數目顯示的是三個。您可以使用 _set_output_format 函式,您可以設定的數字數目會顯示在兩個,但擴展為三,則需要由指數的大小。 |
安全性提示 |
---|
由於 %n 格式是因為在不安全的,預設會停用。如果 %n 在格式字串,遇到無效的參數叫用處理常式,如 參數驗證中所述。若要啟用 %n 支援,請參閱 _set_printf_count_output。 |