2 回答

TA貢獻(xiàn)1829條經(jīng)驗 獲得超7個贊
_snprintf(str,3,"%s","abcdefg"); 存放3個字符。(存放n個字符,下標(biāo)到 n-1)。打印出來的是abc 。
返回值rt為什么是-1呢,因為丟棄了一些字符(-1 表示發(fā)生了“錯誤”)。
如果 char str[100]; int rt = _snprintf(str,100,"%s","abcdefg");
則返回數(shù)就是7 (成功寫入str的字符個數(shù))。

TA貢獻(xiàn)1798條經(jīng)驗 獲得超7個贊
snprintf(),為函數(shù)原型int snprintf(char *str, size_t size, const char *format, ...)。
功能
將可變個參數(shù)(...)按照format格式化成字符串,然后將其復(fù)制到str中
(1) 如果格式化后的字符串長度 < size,則將此字符串全部復(fù)制到str中,并給其后添加一個字符串結(jié)束符('\0');
(2) 如果格式化后的字符串長度 >= size,則只將其中的(size-1)個字符復(fù)制到str中,并給其后添加一個字符串結(jié)束符('\0'),返回值為欲寫入的字符串長度。
char a[20];
i = snprintf(a, 9, "%012d", 12345);
printf("i = %d, a = %s", i, a);
輸出為:i = 12, a = 000000012345
- 2 回答
- 0 關(guān)注
- 136 瀏覽
添加回答
舉報