РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
188 of 815 menu

Функция 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"

Смотрите также

  • функция sprintf,
    которая форматирует строку без ограничения длины
  • функция strcpy,
    которая копирует строку в буфер
  • функция strncpy,
    которая копирует заданное количество символов
  • функция strlen,
    которая возвращает длину строки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить