1
我正在瀏覽printf函數的手冊頁,並且我遇到了一個聲明,它解釋了在格式字符串中使用$(我其實並不很瞭解)。然後我試着尋找一些例子,但是我找不到可以解釋它在函數中的用法的好例子。
任何人都可以提供一個簡單的例子,可以解釋在任何格式化的輸出功能$的用法?
我正在瀏覽printf函數的手冊頁,並且我遇到了一個聲明,它解釋了在格式字符串中使用$(我其實並不很瞭解)。然後我試着尋找一些例子,但是我找不到可以解釋它在函數中的用法的好例子。
任何人都可以提供一個簡單的例子,可以解釋在任何格式化的輸出功能$的用法?
$
格式的動機是事實上,有時當您將數字插入到已翻譯的字符串中時,插入的順序隨語言而改變。爲了能夠只使用一個轉換格式字符串,而無需知道這些值的順序,這是必要的格式字符串本身標出插入順序:
// Simplified example, with thanks to Google translate for the azerbaijani.
const char* buy_book[NL] = {
[fmt_en] = "You can buy %d books for %d dollars.\n",
[fmt_az] = "Siz %2$d dollar %1$d kitab ala bil\u0259rsiniz.\n",
// ...
};
void bookoffer(enum Lang variant, int books, int dollars) {
printf(buy_book[variant], books, dollars);
}
有時是有用的重複格式化值; $
可以不必提供原來的兩倍,爲您節省:
printf("The value at offset %1$d (0x%1$X) is %2$d (0x%2$X)\n", addr, value);
您還可以使用$
值指定爲*
精度:
printf("The first %1$d characters of the string are '%2$.*1$s'.\n",
nchar, str);
謝謝!這個例子很好地解釋了它。 –