在C,因爲我至今明白,這將是正確的:變量`printf的改變字符串輸出()` - 用C語言
printf("%10s\n", "This is C");
將返回:
" This is C!"
(帶字符串之前的有意空間;無引號)。
我的問題是你可以使用變量替換指定打印長度的10
嗎?如果是這樣,怎麼樣?
在C,因爲我至今明白,這將是正確的:變量`printf的改變字符串輸出()` - 用C語言
printf("%10s\n", "This is C");
將返回:
" This is C!"
(帶字符串之前的有意空間;無引號)。
我的問題是你可以使用變量替換指定打印長度的10
嗎?如果是這樣,怎麼樣?
這就是如何:
printf("%*s\n", 10, "This is C");
格式改爲從%10s
到%*s
。 printf()
現在可以期望在字符串之前的參數中有一個int
,其寬度可以填充字符串(上例中的10
;顯然也可以是一個變量)。
要告知printf()
將輸出填充到左側(而不是默認的右側),請使用-
:%-*s
。 (輸出將從" This is C"
更改爲"This is C "
)
要告訴printf()
從字符串只需要幾首字節,或者如果字符串不是空終止,您可以在同一位置添加.*
的格式作爲浮點類型的精度。 printf()
將打印到該字符數,停在第一個空字符處。例如:
int width = 10;
int chars = 4;
printf("%-*.*s", width, chars, "This is C");
會產生輸出"This "
。
你能否給你的代碼添加一些上下文? – ppperry
@ppperry,更新了答案。 – Dummy00001
細節:'10'不指定打印的長度。它指定_minimum_長度。不清楚輸出「!」來自哪裏。 – chux