logo

функција снпринтф() у Ц

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

Функција снпринт() се користи за форматирање датих стрингова у низ знакова или вредности у области бафера. Функција снпринтф() садржи аргумент 'н' који представља максималан број знакова, укључујући нулл карактер, ускладиштених у области бафера.

Функција снпринтф такође враћа број знакова који су уметнути или уписани у бафер. Међутим, ови карактери се враћају или приказују помоћу функције принтф() у изјави за штампање или знакова у датотеци заглавља стдоут.

функција снпринтф() у Ц

Напомена: Функција снпринтф() умеће нул карактер на крај резултујућег излаза који се такође рачуна као величина бафера. Штавише, бафер је низ који складишти само елементе типа знакова, а не у типу стринга.

Синтакса функције снпринтф() у Ц

Следи синтакса функције снпринтф() у програмском језику ц.

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

Параметри:

стр : То је бафер низа знакова.

величина : дефинише максималан број знакова који се могу чувати у баферу.

формату : У језику Ц, стринг дефинише формат који садржи исти тип спецификација који функција принтф() дефинише у датотеци заглавља стдио.х.

…: То је опциони (…) параметар или аргумент.

Повратне вредности:

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

Пример 1: Програм за демонстрацију функције снпринтф() у Ц

Хајде да направимо програм да проверимо величину бафера и вратимо број унетих знакова у бафер користећи функцију снпринтф() у Ц.

 /* 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 

2ндизвршење

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

Сада смањујемо максималан улазни карактер са 34 на 14, и овај пут враћа негативан број, што указује да је величина бафера мања од датог низа.

Пример 2: Програм за коришћење функције снпринтф() у Ц

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

 #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)>

У горњем програму, декларисали смо тип карактера буффер буф[200], а променљива буф_сизе може да убаци максимални број знакова је 55. Ако је дата изјава у дефинисаном опсегу, функција снпринтф() враћа укупан број. знакова прочитаних из бафера.

2ндизвршење

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

Када дефинишемо буф_сизе као 35, дата изјава се аутоматски скраћује помоћу функције снпринтф() која враћа негативан број (-1) и приказује 'Бафер није у потпуности попуњен или написан'.