簡體   English   中英

如何在 C 的 printf 中轉義 %(百分比)符號

[英]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)

防止嵌入的 % 導致問題(內存沖突、 分段錯誤等)。

如果字符串中沒有格式,您可以使用puts (或fputs ):

puts("hello%");

如果字符串中有格式:

printf("%.2f%%", 53.2);

如評論中所述, puts\\n附加到輸出,而fputs不會。

與自己...

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("hello%%");  

閱讀更多C 中使用的所有格式說明符

您可以使用 %%:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM