可能重複:
what does 「%.*s」 mean in printf in c%。* s在printf上代表什麼?
我知道這個問題有肯定在別的地方問過,但搜索的SO收益率沒有什麼意義的 「%* S」。有人可以向我解釋下面這行嗎?
printf("%.*s", len, buffer);
可能重複:
what does 「%.*s」 mean in printf in c%。* s在printf上代表什麼?
我知道這個問題有肯定在別的地方問過,但搜索的SO收益率沒有什麼意義的 「%* S」。有人可以向我解釋下面這行嗎?
printf("%.*s", len, buffer);
它限制輸出到至多len
字符。 .
開始'精確'; *
表示'使用參數列表中的int
來確定精度'。請注意,'字符串'(buffer
)如果長度大於len
,則甚至不必爲空終止。
所有這一切都可以在手冊頁printf()
中找到。
有一個很好的表here顯示所有不同的格式說明符可以爲你做什麼。爲了您的例子,假設你有一個緩衝區,並定義爲長度:
char buf[] = "Hello World";
len = 5;
您可以使用%.*s
打印完整字符串的一部分:
printf("%.*s", len, buffer);
此輸出Hello
第5( 1基於)字符在這種情況下。注意這與以下內容相同:
printf("%.5s", buffer);
從'printf',*(可選)的參考。後面跟着整數或*表示轉換的精度。在使用*的情況下,精度由int類型的附加參數指定* – chris
* :: pap42標籤處的峯值:: * Ah ...嘗試'man 3 printf'。關於unix的好處之一是爲c標準庫和命令行可訪問的操作系統API提供文檔。學生的問題:3是什麼意思,爲什麼它是必要的? – dmckee
我假設你打算把'*'放在你的示例代碼中。 – Mike