Linux下snprintf的返回值解析

小樊
113
2024-08-11 21:41:36

在 Linux 下,snprintf 函數(shù)返回的值是生成的字符串的長(zhǎng)度,不包括終止 null 字符。如果生成的字符串長(zhǎng)度大于指定的緩沖區(qū)大小,snprintf 會(huì)截?cái)嘧址⒎祷貙?shí)際需要的緩沖區(qū)大?。ú话ńK止 null 字符)。如果緩沖區(qū)大小足夠大,snprintf 返回值將是生成的字符串的長(zhǎng)度(不包括終止 null 字符)。

以下是一個(gè)示例代碼:

#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;
}

假設(shè)緩沖區(qū)大小為10,輸出結(jié)果將是:

Generated string: Hello, wo
Length of generated string: 12

這里 snprintf 函數(shù)實(shí)際生成了一個(gè)長(zhǎng)度為12的字符串,但由于緩沖區(qū)大小為10,所以只能存儲(chǔ)前10個(gè)字符,因此返回值是12。

0