2016-05-12 45 views
0

在C,因爲我至今明白,這將是正確的:變量`printf的改變字符串輸出()` - 用C語言

printf("%10s\n", "This is C"); 

將返回:

" This is C!" 

(帶字符串之前的有意空間;無引號)。

我的問題是你可以使用變量替換指定打印長度的10嗎?如果是這樣,怎麼樣?

+0

細節:'10'不指定打印的長度。它指定_minimum_長度。不清楚輸出「!」來自哪裏。 – chux

回答

1

這就是如何:

printf("%*s\n", 10, "This is C"); 

格式改爲從%10s%*sprintf()現在可以期望在字符串之前的參數中有一個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 "

+0

你能否給你的代碼添加一些上下文? – ppperry

+0

@ppperry,更新了答案。 – Dummy00001