Функция snprintf: форматирование строк в C/C++
Функция snprintf является одной из функций стандартной библиотеки языка программирования C. Она предназначена для форматирования строки и записи результата в указанный буфер. Позволяет задать максимальный размер буфера, чтобы избежать переполнения (buffer overflow).
Синтаксис функции snprintf выглядит следующим образом:
int snprintf(char *str, size_t size, const char *format, ...);
- str - указатель на буфер, в который будет записан результат форматирования,
- size - максимальная длина буфера,
- format - строка формата, определяющая структуру и типы данных для форматирования,
- ... - необязательные аргументы, которые будут подставлены в соответствующие спецификаторы формата.
Функция snprintf возвращает число записанных символов (без учета завершающего символа \0). При этом, если результат форматирования не умещается в заданный буфер, возвращается отрицательное число, указывающее на ошибку.
Давайте рассмотрим пример использования функции snprintf.
#include <stdio.h>
int main() {
char buffer[10]; // буфер длиной 10 символов
int age = 25;
float height = 1.75;
int result = snprintf(buffer, sizeof(buffer), "Мне %d лет и мой рост %.2f метра.", age, height);
if (result >= 0 && result < sizeof(buffer)) {
printf("Результат: %s\n", buffer);
} else {
printf("Ошибка при форматировании строки.\n");
}
return 0;
}
В данном примере мы форматируем строку, содержащую информацию о возрасте (age) и росте (height). Затем, результат форматирования записывается в буфер buffer с помощью функции snprintf. Мы указываем максимальную длину буфера при помощи sizeof(buffer). Если результат удачно записан в буфер, мы выводим его на экран. В противном случае, выводится сообщение об ошибке.
Пожалуйста, обратите внимание, что мы используем спецификаторы формата %d и %.2f, чтобы указать, какие типы аргументов должны быть подставлены в строку формата.