stdio.h

snprintf

Описание

int snprintf( char *buffer, size_t size, char *format, ... )

Осъществява изход към буфер(низ), създаден посредством форматиращия низ format. Функцията приема като параметър дължината на буфера и предотвратява препълване.

Параметри

char *buffer

Буфер, в който ще бъде изведен създадения низ.

size_t size

Размер на буфера.

char *format

Форматиращия низ е съставен от нула или повече нормални символи и директиви за преобразуване. Всяка директива за преобразуване започва с знака % и се заменя с един параметър.

Типове директиви за форматиране

Директива Описание
%% Отпечатва процент
%c Отпечатва символ
%d Отпечатва int със знак
%i Отпечатва int със знак
%e Отпечатва се в научна нотация е
%E Отпечатва се в научна нотация Е
%f Отпечатва число с плаваща запетая
%g Отпечатай с по краткото %е или %f
%G Отпечатай с по краткото %E или %f
%o Отпечатва числото в осмично представяне
%s Отпечатва низ
%u Огпечатва unsigned int
%x Отпечатва число в 16-тичен формат с малки букви
%X Отпечатва число в 16-тичен формат с големи букви
%p Отпечатва указател
%n  

Всяка директива за форматиране в допълнение може да притежава четери вида флага. Флагове за подравняване и запълване, флагове за дължина, флагове за точност и флагове за модифициране.

Флагове за подравняване и запълване

Флаг Описание
- Ляво подравняване при зададена дилжина на запълване. По подразбиране подравняването е десно.
+ Задава показването венаги на знака за плюс или минус. По подразбиране се показва знака само за минус.
(интервал) Ако не е зададен знак за отпечатване, интервал се печата пред числото.
# Използва се с %x %X. Задава пред числото да бъде поставен знака 0x.
0 Запълването на определената дължина се осъществява с нули. По подразбиране е с интервали.

 Флагове за дължина

Флаг Описание
(дължина) Минимален брой символи за отпечатване. Ако дължината на стоиноста и по малка от зададената резултата се допълва с интевали. Стойноста не се отрязва ако дължината и не надхвърла зададената.
* Минималния брой символи се задава динамично чрез параметър в аргументите.

Флагове за точност

Флаг Описание
.дължина

За целочислени типове(%d ,%i, %u, %o, %x, %X) флага определя броя на символите кайто ще бъдат показани. За числа с плаваща запетая (%f, %E) определя броя символи които ще бъдат показани след запетаята. За низове задава максималния брой символи който ще бъдат отпечатани.

.*  Задава броя на символите динамично чрез параметър.

 Флагове за модифициране

Флаг Описание
h Визуализира short int параметри. Използва се с целочислиени типове(%d ,%i, %u, %o, %x, %X).
l Визуализира long int пораметри с целочислени типове(%d ,%i, %u, %o, %x, %X) и разширени низове с %s.
L Визуализира long double параметри. Използва се с типове за плаваща запетая (%f, %g, %G, %e, %E).

 

...

Множество от параметри. Броя на параметрите трябва да бъде равен на броя на зададените директиви в форматиращия низ.

Връщани стойности

Връща дължината на изведения низ.

Примери

от: adviser at cpp-examples dot com   Свали кода във файл
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     char str[16];
  5.     int len;
  6.     len = snprintf(str, 16, "%s %d", "Тест номер:", 1000);
  7.     printf("%s", str);
  8.     return 0;
  9. }

Бележки

Ако размера на буфера е зададен на нула нищо не се отпечатва и указателят към буфера може да бъде NULL.

Виж също

sprintf - пише форматиран изход в буфер
fprintf - форматиран изход във файл
printf - отпечатва форматиран изход