logo

функція snprintf() у C

У цьому розділі ми обговоримо функцію snprintf() мовою програмування C. Snprintf — це попередньо визначена бібліотечна функція файлу заголовка stdio.h, яка перенаправляє вихідні дані стандартної функції printf() до інших буферів.

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

Функція snprintf також повертає кількість символів, які вставлено або записано в буфер. Однак ці символи повертаються або відображаються функцією printf() у операторі print або символами у файлі заголовка stdout.

масив сортування java
функція snprintf() у C

Примітка. Функція snprintf() вставляє нульовий символ у кінець результату, який також зараховується як розмір буфера. Крім того, буфер — це масив, який зберігає лише елементи символьного типу, а не елементи рядкового типу.

Синтаксис функції snprintf() у C

Нижче наведено синтаксис функції snprintf() мовою програмування c.

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

Параметри:

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

розмір : визначає максимальну кількість символів, які можна зберігати в буфері.

формат : у мові 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) і відображає «Буфер не повністю заповнений або записаний».