對許多人來說,這可能是一個非常基本的問題,但我無法理解 %。* s在做什麼?瞭解printf中的表示法
void substring(int i, int j, char *ch)
{
printf("The substring is: %.*s\n", j - i, &ch[i]);
//what is %.*s doing?
}
對許多人來說,這可能是一個非常基本的問題,但我無法理解 %。* s在做什麼?瞭解printf中的表示法
void substring(int i, int j, char *ch)
{
printf("The substring is: %.*s\n", j - i, &ch[i]);
//what is %.*s doing?
}
*
正在從字符串之前的參數取得字符串的長度限制。因此printf將輸出(至多)j - i
字符從&ch[i]
到stdout
。如果字符串較短,則將打印整個字符串,但不會填充空白。
以下是printf
的一個很好的參考:http://en.cppreference.com/w/c/io/fprintf。 *
而這正是它說:
.
其次是整數或*
指定轉換的精度。在使用*
的情況下,精度由int
類型的附加參數指定。如果這個參數的值是負數,它將被忽略。請參閱下表以瞭解精確度的確切影響。
而對於s
,它說:
精度指定要寫入的字節的最大數量。
所以在你的情況下,它最多打印j-i
個字符。
'。* * *精度未在格式字符串中指定,而是作爲必須格式化的參數前面的附加整數值參數。*請參見[printf引用](http://www.cplusplus。 com/reference/cstdio/printf /) – 2013-03-12 17:51:29
絕對可以提出基本的問題,唯一的問題是在問之前,你應該從你身邊做一些最小化 – 2013-03-12 18:13:40