📜  C++ snprintf()

📅  最后修改于: 2020-09-25 08:35:37             🧑  作者: Mango

在C++中的snprintf() 函数用于格式化的字符串写入到<字符>缓冲区。

与sprintf()不同, snprintf()指定了可写入缓冲区的最大字符数。

snprintf()原型

int snprintf( char* buffer, size_t buf_size, const char* format, ... );

snprintf() 函数将format指向的字符串写入buffer 。可以写入的最大字符数为(buf_size-1)

字符被写入后,终止空字符添加。如果buf_size等于零, buf_size写入任何内容,并且缓冲区可能是空指针。

它在头文件中定义。

snprintf()参数

snprintf()返回值

如果成功, snprintf()将排除终止空字符足够大的缓冲已被写入字符 函数返回数。失败时,它将返回负值。

当且仅当返回值是非负且小于buf_size时,才认为输出已完全写入。

示例:snprintf() 函数的工作方式

#include 
#include 

using namespace std;

int main()
{
    char buffer[100];
    int retVal, buf_size = 100;
    char name[] = "Max";
    int age = 23;

    retVal = snprintf(buffer, buf_size, "Hi, I am %s and I am %d years old", name, age);
    if (retVal > 0 && retVal < buf_size)
    {
        cout << buffer << endl;
        cout << "Number of characters written = " << retVal << endl;
    }
    else
        cout << "Error writing to buffer" << endl;

    return 0;
}

运行该程序时,输出为:

Hi, I am Max and I am 23 years old
Number of characters written = 34