logo

snprintf() funkcija u C-u

U ovom odjeljku raspravljat ćemo o funkciji snprintf() u programskom jeziku C. Snprintf je unaprijed definirana funkcija biblioteke datoteke zaglavlja stdio.h, koja preusmjerava izlaz standardne funkcije printf() na druge međuspremnike.

Funkcija snprint() koristi se za formatiranje zadanih nizova u niz znakova ili vrijednosti u području međuspremnika. Funkcija snprintf() sadrži argument 'n' koji predstavlja najveći broj znakova, uključujući nulti znak, pohranjenih u području međuspremnika.

Funkcija snprintf također vraća broj znakova koji su umetnuti ili zapisani u međuspremnik. Međutim, te znakove vraća ili prikazuje funkcija printf() u izjavi za ispis ili znakovi u datoteci zaglavlja stdout.

snprintf() funkcija u C-u

Napomena: Funkcija snprintf() umeće nulti znak na kraj rezultirajućeg izlaza koji se također računa kao veličina međuspremnika. Nadalje, međuspremnik je niz koji pohranjuje samo elemente znakovnog tipa, a ne u tipu niza.

Sintaksa funkcije snprintf() u C-u

Slijedi sintaksa funkcije snprintf() u programskom jeziku c.

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

Parametri:

str : To je međuspremnik niza znakova.

veličina : definira najveći broj znakova koji se mogu pohraniti u međuspremnik.

format : U jeziku C, string definira format koji sadrži istu vrstu specifikacija koju funkcija printf() definira u datoteci zaglavlja stdio.h.

…: To je izborni (…) parametar ili argument.

Povratne vrijednosti:

Funkcija snprintf() vraća broj znakova ili vrijednosti koje su zapisane ili pohranjene za dovoljno veliki međuspremnik bez uključivanja nultog znaka za završetak. A ako su napisani znakovi veći od veličine međuspremnika, vraća negativnu vrijednost. A ako je veličina međuspremnika premala, dani niz će biti skraćen ili smanjen na veličinu međuspremnika.

Primjer 1: Program za demonstraciju funkcije snprintf() u C-u

Kreirajmo program za provjeru veličine međuspremnika i vraćanje broja znakova unesenih u međuspremnik pomoću funkcije snprintf() u C-u.

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

Kada izvršimo gornji program, on proizvodi zadani izlaz na ekranu konzole.

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

2ndizvršenje

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

Sada smanjujemo maksimalni ulazni znak s 34 na 14, a ovaj put vraća negativan broj, što ukazuje da je veličina međuspremnika manja od danog niza.

Primjer 2: Program za korištenje funkcije snprintf() u C-u

Kreirajmo primjer za umetanje znaka u međuspremnik i povratak iz istog pomoću funkcije snprintf() u programskom jeziku C.

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

U gornjem programu deklarirali smo međuspremnik tipa znakova buf[200], a varijabla buf_size može umetnuti maksimalni broj znakova 55. Ako je dana izjava u definiranom rasponu, funkcija snprintf() vraća ukupni broj. znakova pročitanih iz međuspremnika.

2ndizvršenje

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

Kada buf_size definiramo kao 35, danu izjavu automatski skraćuje funkcija snprintf() koja vraća negativan broj (-1) i prikazuje 'Međuspremnik nije u potpunosti ispunjen ili zapisan'.