Функция snprintf: безопасное форматирование строк на Си
Функция snprintf() позволяет записывать отформатированные данные в строку с заданным максимальным размером.
Синтаксис функции:
cpp
int snprintf(char *str, size_t size, const char *format, ...);
Где:
- str - указатель на буфер, в который будут помещены отформатированные данные;
- size - максимальный размер буфера;
- format - строка формата (как в функции printf);
- ... - дополнительные аргументы, соответствующие формату.
Функция snprintf() возвращает количество символов, которое было бы записано в строку, если бы буфер был достаточно большим.
Пример использования функции:
cpp
#include
int main() {
char buffer[20];
int n = snprintf(buffer, 20, "%s %d", "Hello", 1234);
printf("Результат: %s, Кол-во символов: %d\n", buffer, n);
return 0;
}
Результат выполнения программы:
Результат: Hello 1234, Кол-во символов: 11
Здесь мы определяем буфер размером 20 символов и используем функцию snprintf() для записи отформатированной строки в этот буфер. Форматируемая строка состоит из двух параметров: строки "Hello" и числа "1234". Вся отформатированная строка вместе с завершающим нулевым символом занимает в буфере 11 символов, что и отображается возвращаемым значением функции.
Важно помнить, что функция snprintf() не гарантирует, что в буфер будет записана вся строка, если размер буфера не был достаточно большим. Поэтому необходимо всегда проверять возвращаемое значение функции и убедиться, что оно не превышает размер буфера.