Ц ++ снпринтф () - Ц ++ стандардна библиотека

Функција снпринтф () у језику Ц ++ користи се за писање форматираног низа у бафер знаковних низова.

За разлику од спринтф (), максималан број знакова који се могу уписати у бафер наведен је у snprintf().

снпринтф () прототип

 инт снпринтф (цхар * буффер, сизе_т буф_сизе, цонст цхар * формат,…);

snprintf()Функција пише низ показао да је формат у бафер. Максималан број знакова који се могу написати је (buf_size-1).

Након писања знакова додаје се завршни нулл знак. Ако је буф_сизе једнак нули, ништа се не записује, а бафер може бити нулти показивач.

Дефинисано је у заглављу датотеке.

снпринтф () параметри

  • бафер: показивач на бафер низа за писање резултата.
  • буф_сизе: Наведите максималан број знакова који ће се уписати у бафер, а то је буф_сизе-1.
  • формат: показивач на низ који се завршава нулом и записује се у ток датотеке. Састоји се од знакова, заједно са опционим спецификаторима формата који почињу са%.

    Спецификатори формата замењују се вредностима одговарајућих променљивих које следе низ формата.

    Спецификатор формата има следеће делове:

    • Водећи знак%
    • Заставе: Опционално једна или више заставица које мењају понашање конверзије.
      • -: Лево оправдајте резултат у пољу. Подразумевано је исправно оправдано.
      • +: Знак резултата је везан за почетак вредности, чак и за позитивне резултате.
      • Размак: Ако нема знака, размак се додаје на почетак резултата.
      • #: Изводи се алтернативни облик конверзије.
      • 0: Користи се за цео број и број са покретном тачком. Водеће нуле се користе за попуњавање бројева уместо размака.
    • Ширина: Опционална * или целобројна вредност која се користи за одређивање поља минималне ширине.
    • Прецизност: Опционо поље које се састоји од а. након чега следи * или цео број или ништа за прецизирање.
    • Дужина: Опционални модификатор дужине који одређује величину аргумента.
    • Спецификатор: Спецификатор формата конверзије. Доступни спецификатори формата су следећи:
      Спецификатор формата Опис
      % Принтс%
      ц Писе један лик
      с Записује низ знакова
      д или и Претвара потписани цели број у децимални приказ
      о Претвара непотписани цели број у осмински приказ
      Кс или к Претвара непотписани цели број у хексадецимални приказ
      у Претвара непотписани цијели број у децимални приказ
      Ф или ф Претвара број са покретном зарезом у децимални приказ
      Е или е Претвара број с помичном зарезом у запис децималног експонента
      А или а Претвара број са покретном зарезом у хексадецимални експонент
      Г или г. Претвара број с помичном зарезом у децимални или децимални запис експонента
      н Враћа број знакова до сада написаних овим позивом функцији. Резултат се записује у вредност на коју указује аргумент
      стр Пише секвенцу карактера дефинисану имплементацијом која дефинише показивач.

      Дакле, општи формат спецификатора формата је: %(flags)(width)(.precision)(length)specifier

  • …: Остали додатни аргументи који одређују податке за штампање. Јављају се у низу према спецификатору формата.

снпринтф () Повратна вредност

Ако је успешна, snprintf()функција враћа број знакова који би били написани за довољно велик бафер, искључујући завршавајући нулл знак. У случају квара враћа негативну вредност.

Излаз се сматра написаним у потпуности онда и само ако је враћена вредност ненегативна и мања од буф_сизе.

Пример: Како функционише снпринтф () функција

 #include #include using namespace std; int main() ( char buffer(100); int retVal, buf_size = 100; char name() = "Max"; int age = 23; retVal = snprintf(buffer, buf_size, "Hi, I am %s and I am %d years old", name, age); if (retVal> 0 && retVal < buf_size) ( cout << buffer << endl; cout << "Number of characters written = " << retVal << endl; ) else cout << "Error writing to buffer" << endl; return 0; )

Када покренете програм, излаз ће бити:

 Здраво, ја сам Мак и имам 23 године. Број написаних знакова = 34

Занимљиви Чланци...