2012-10-29 38 views
2

可能重複:
what does 「%.*s」 mean in printf in c%。* s在printf上代表什麼?

我知道這個問題有肯定在別的地方問過,但搜索的SO收益率沒有什麼意義的 「%* S」。有人可以向我解釋下面這行嗎?

printf("%.*s", len, buffer);

+0

從'printf',*(可選)的參考。後面跟着整數或*表示轉換的精度。在使用*的情況下,精度由int類型的附加參數指定* – chris

+0

* :: pap42標籤處的峯值:: * Ah ...嘗試'man 3 printf'。關於unix的好處之一是爲c標準庫和命令行可訪問的操作系統API提供文檔。學生的問題:3是什麼意思,爲什麼它是必要的? – dmckee

+0

我假設你打算把'*'放在你的示例代碼中。 – Mike

回答

12

它限制輸出到至多len字符。 .開始'精確'; *表示'使用參數列表中的int來確定精度'。請注意,'字符串'(buffer)如果長度大於len,則甚至不必爲空終止。

所有這一切都可以在手冊頁printf()中找到。

1

有一個很好的表here顯示所有不同的格式說明符可以爲你做什麼。爲了您的例子,假設你有一個緩衝區,並定義爲長度:

char buf[] = "Hello World"; 
len = 5; 

您可以使用%.*s打印完整字符串的一部分:

printf("%.*s", len, buffer); 

此輸出Hello第5( 1基於)字符在這種情況下。注意這與以下內容相同:

printf("%.5s", buffer); 
相關問題