我很難理解在snprintf
. 假設我有兩個數字:
int i =11; int k = 3;
我想像這樣格式化它們"[%02d] %03d\t"
並使用snprintf
. 之後我將結果字符串與write()
.
snprintf
需要長度/字節數 n。我不明白我需要提供的長度是多少……我有兩個理論:
a) 它是
sizeof(int)*2
b)我通過計算兩個整數的數字並添加輸出將具有的其他字符來檢查格式化字符串將包含多少個字符:
2*sizeof(char) + 1*sizeof(char) + 2*sizeof(char) + 3*sizeof(char)+ 1*sizeof(char)
-> i 的數字 + k 的數字 + 添加到第一個 int 的零 + 添加到第二個 int + tab 的零
我正在努力理解我必須給予的“n”是什麼 snprintf
根據文檔:
要在緩衝區中使用的最大字節數。生成的字符串的長度最多為 n-1,為附加的終止空字符留出空間。size_t 是無符號整數類型。
假設您寫入這樣的數組:
char buf[32];
緩衝區可以容納 32 個字符(包括空終止符)。因此我們這樣調用函數:
snprintf (buf, 32, "[%02d] %03d\t", i, k);
您還可以檢查返回值以查看已寫入(或將已寫入)的字符數。在這種情況下,如果它大於 32,則意味著必須丟棄某些字符,因為它們不適合。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句