logo

snprintf() функция в C

В този раздел ще обсъдим функцията snprintf() в езика за програмиране C. Snprintf е предварително дефинирана библиотечна функция на заглавния файл stdio.h, която пренасочва изхода на стандартната функция printf() към други буфери.

Функцията snprint() се използва за форматиране на дадените низове в поредица от знаци или стойности в буферната област. Функцията snprintf() съдържа аргумент 'n', представляващ максималния брой знаци, включително нулевия знак, съхранявани в буферната област.

Функцията snprintf също връща броя знаци, които са вмъкнати или записани в буфера. Тези знаци обаче се връщат или показват от функцията printf() в оператора за печат или знаци в заглавния файл stdout.

snprintf() функция в C

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

Синтаксис на функцията snprintf() в C

Следва синтаксисът на функцията snprintf() в езика за програмиране c.

 int snprintf (char *str, size_t size, const char *format, ?); 

Параметри:

ул : Това е буфер от масив от символен тип.

размер : определя максималния брой знаци, които могат да се съхраняват в буфера.

блокиране на реклами в youtube android

формат : В езика C низът дефинира формат, който съдържа същия тип спецификации като функцията printf() дефинирана в заглавния файл stdio.h.

…: Това е незадължителен (…) параметър или аргумент.

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

Функцията snprintf() връща броя знаци или стойности, които са били записани или съхранени за достатъчно голям буфер, без да включва нулевия завършващ знак. И ако написаните знаци са по-големи от размера на буфера, той връща отрицателна стойност. И ако размерът на буфера е твърде малък, даденият низ ще бъде съкратен или намален до размера на буфера.

Пример 1: Програма за демонстриране на функцията snprintf() в C

Нека създадем програма, която да проверява размера на буфера и да връща броя на символите, въведени в буфера, като използва функцията snprintf() в C.

 /* create an example to use the snprintf function in c. */ #include #include int main () { // declare and initialize the char variable char *r = 'Javatpoint.com'; char buf[100]; // define the size of character type buffer /* use the snprintf() function to return the no. of character founded in the buffer area */ int n = snprintf (buf, 34, '%s 
', r); // 34 represents the size of buffer to store max characters // display the string stored in the buffer and count each character of the buffer area. printf (' The given string is: %s 
 Count the stored character: %d 
', buf, n); return 0; } 

Когато изпълним горната програма, тя извежда дадения изход на екрана на конзолата.

 The given string is: Javatpoint.com Count the stored character: 16 

2ndекзекуция

 The given string is: Javatpoint.com Count the stored character: -1 

Сега намаляваме максималния входен знак от 34 на 14 и този път той връща отрицателно число, което показва, че размерът на буфера е по-малък от дадения низ.

Пример 2: Програма за използване на функцията snprintf() в C

Нека създадем пример за вмъкване на знака в буфера и връщане от него с помощта на функцията snprintf() на езика за програмиране C.

как да сортирате масив в java
 #include #include int main () { char buf[200]; // define the size of character type buffer int ret_val, buf_size = 55; char name[] = &apos;David&apos;; // define string int age = 19; // use the snprintf() function to return the no. of character found in buffer area ret_val = snprintf (buf, buf_size, &apos;Hello friend, My name is %s, and I am %d years old.&apos;, name, age); /* check ret_value should be greater than 0 and less than the size of the buffer (buf_size). */ if ( ret_val &gt; 0 &amp;&amp; ret_val <buf_size) { printf (' buffer is written successfully! 
 '); %s
', buf); no. of characters read: %d', ret_val); } else not completely filled or written. %s 
', the return value: 0; < pre> <p> <strong>When we execute the above program, it produces the given output on the console screen.</strong> </p> <pre> Buffer is written successfully! Hello friend, My name is David, and I am 19 years old. No. of characters read: 53 </pre> <p>In the above program, we declared the character type buffer buf[200], and the buf_size variable can insert the maximum characters is 55. If the given statement is in the defined range, the snprintf() function returns the total no. of characters read from the buffer. </p> <p> <strong>2<sup>nd</sup> execution</strong> </p> <pre> Buffer is not completely filled or written. Hello friend, My name is David and The return value: -1 </pre> <p>When we define the buf_size as 35, the given statement is automatically truncated by the snprintf() function that returns a negative number (-1) and displays &apos;Buffer is not completely filled or written&apos;.</p> <hr></buf_size)>

В горната програма ние декларирахме символен тип буфер buf[200] и променливата buf_size може да вмъкне максималния брой символи е 55. Ако дадената инструкция е в дефинирания диапазон, функцията snprintf() връща общия брой. от символи, прочетени от буфера.

2ndекзекуция

 Buffer is not completely filled or written. Hello friend, My name is David and The return value: -1 

Когато дефинираме buf_size като 35, даденият израз автоматично се съкращава от функцията snprintf(), която връща отрицателно число (-1) и показва „Буферът не е напълно попълнен или записан“.