[英]How to escape the % (percent) sign in C's printf
在 C 中使用printf
時如何轉義 % 符號?
printf("hello\%"); /* not like this */
您可以通過像這樣發布雙 '%' 來逃避它: %%
使用您的示例:
printf("hello%%");
轉義 '%' 符號僅適用於printf 。 如果你這樣做:
char a[5];
strcpy(a, "%%");
printf("This is a's value: %s\n", a);
它將打印: This is a's value: %%
正如其他人所說, %% 將逃脫 %.
但是請注意,您永遠不應該這樣做:
char c[100];
char *c2;
...
printf(c); /* OR */
printf(c2);
每當你必須打印一個字符串時,總是,總是,總是使用
printf("%s", c)
防止嵌入的 % 導致問題(內存沖突、 分段錯誤等)。
與自己...
printf("hello%%"); /* like this */
挑剔:
您並沒有真正轉義指定printf()
(和scanf()
)系列函數格式的字符串中的%
。
的%
,在printf()
(和scanf()
)系列函數,啟動轉換規范。 一個的規則轉換規范規定一%
作為轉換指定(緊隨%
啟動該轉換規范)導致'%'
被寫入字符不帶參數的轉換。
該字符串內部確實有 2 個'%'
字符(與轉義字符相反: "a\\bc"
是具有 3 個非空字符的字符串; "a%%b"
是具有 4 個非空字符的字符串)。
使用雙%%
:
printf("hello%%");
像這樣:
printf("hello%%");
//-----------^^ inside printf, use two percent signs together
您可以使用 %%:
printf("100%%");
結果是:
100%
C 中的反斜杠用於轉義字符串中的字符。 字符串不會將%
識別為特殊字符,因此不需要轉義。 printf
是另一回事:使用%%
打印一個%
。
是的,使用printf("hello%%");
它完成了。
您可以簡單地使用%
兩次,即"%%"
例子:
printf("You gave me 12.3 %% of profit");
雙 '%' 也適用於 ".Format(...)。示例(iDrawApertureMask == 87, fCornerRadMask == 0.05): csCurrentLine.Format("\\%ADD%2d%C,%6.4f*\\%",iDrawApertureMask,fCornerRadMask) ;
給出(字符串內容)csCurrentLine 的期望值和預期值; "%ADD87C, 0.0500*%"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.