stdio.h

sprintf

Описание

int sprintf( char *buffer, char *format, ... )

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

Параметри

char *buffer

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

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 buffer[50];
  5.   int n, a=5, b=3;
  6.   n=sprintf (buffer, "%d плюс %d е %d", a, b, a+b);
  7.   printf ("[%s] е дълго %d символа ",buffer,n);
  8.   return 0;
  9. }
  10. //Изход от програмата
  11. //[5 плюс 3 е 8] е дълго 12 символа

Бележки

sprintf не проверява дължината на изходния буфер. Възможно е да възникне препълване на изходния буфер. За да избегнете този недостатък използвайте функцията snprintf.

Виж също

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