在 Linux 下,snprintf
函數返回的值是生成的字符串的長度,不包括終止 null 字符。如果生成的字符串長度大于指定的緩沖區大小,snprintf
會截斷字符串,并返回實際需要的緩沖區大小(不包括終止 null 字符)。如果緩沖區大小足夠大,snprintf
返回值將是生成的字符串的長度(不包括終止 null 字符)。
以下是一個示例代碼:
#include <stdio.h>
int main() {
char buffer[10];
int length = snprintf(buffer, 10, "Hello, world!");
printf("Generated string: %s\n", buffer);
printf("Length of generated string: %d\n", length);
return 0;
}
假設緩沖區大小為10,輸出結果將是:
Generated string: Hello, wo
Length of generated string: 12
這里 snprintf
函數實際生成了一個長度為12的字符串,但由于緩沖區大小為10,所以只能存儲前10個字符,因此返回值是12。