Функция snprintf
Функция snprintf выполняет форматирование данных
по заданному шаблону и записывает результат в буфер,
не превышая указанный размер. Это безопасная версия
функции sprintf, которая позволяет избежать переполнения буфера.
В первый параметр передается указатель на буфер для записи,
во второй - максимальное количество символов, включая
завершающий нулевой символ, в третий - строка формата,
а далее - переменные для подстановки в шаблон.
Функция возвращает количество символов, которые были бы
записаны, если бы размер буфера был неограничен.
Синтаксис
int snprintf(char* buffer, size_t size, const char* format, ...);
Пример
Давайте отформатируем строку с помощью функции snprintf
и выведем результат:
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
char buffer[50];
int num = 123;
string str = "abcde";
int res = snprintf(buffer, sizeof(buffer), "Number: %d, String: %s", num, str.c_str());
cout << "Result: " << buffer << endl;
cout << "Return value: " << res << endl;
return 0;
}
Результат выполнения кода:
"Result: Number: 123, String: abcde"
"Return value: 26"
Пример
Давайте продемонстрируем ограничение длины строки при
помощи функции snprintf:
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
char buffer[10];
string str = "abcde";
int res = snprintf(buffer, sizeof(buffer), "String: %s", str.c_str());
cout << "Result: " << buffer << endl;
cout << "Return value: " << res << endl;
return 0;
}
Результат выполнения кода:
"Result: String: a"
"Return value: 14"