Функция sprintf
Функция sprintf записывает отформатированный текст
в символьный массив (строку), а не выводит его на экран.
В первый параметр мы передаем указатель на массив,
куда будет записан результат, во второй - строку формата,
а в последующие параметры - значения, которые нужно
подставить в эту строку. Строка формата может содержать
спецификаторы, такие как "%d", "%f", "%s"
и другие. Функция возвращает количество записанных символов
без учета нулевого символа.
Синтаксис
int sprintf(char* buffer, const char* format, ...)
Пример
Давайте запишем в массив строку с числом 42
и словом "abcde", используя спецификаторы "%d"
и "%s":
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
char buf[100];
int num = 42;
const char* str = "abcde";
int res = sprintf(buf, "%d %s", num, str);
cout << buf << endl;
cout << res << endl;
return 0;
}
Результат выполнения кода:
"42 abcde"
8
Пример
Давайте отформатируем вещественное число с точностью
до 2 знаков после запятой:
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
char buf[100];
double num = 3.14159;
sprintf(buf, "%.2f", num);
cout << buf << endl;
return 0;
}
Результат выполнения кода:
3.14
Пример
Давайте объединим несколько значений разных типов в одну строку:
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
char buf[100];
int a = 1;
int b = 2;
double c = 3.5;
sprintf(buf, "a=%d, b=%d, c=%.1f", a, b, c);
cout << buf << endl;
return 0;
}
Результат выполнения кода:
"a=1, b=2, c=3.5"