logo

funkcija snprintf() v C

V tem razdelku bomo obravnavali funkcijo snprintf() v programskem jeziku C. Snprintf je vnaprej določena knjižnična funkcija datoteke glave stdio.h, ki preusmeri izhod standardne funkcije printf() v druge medpomnilnike.

Funkcija snprint() se uporablja za oblikovanje danih nizov v vrsto znakov ali vrednosti v območju medpomnilnika. Funkcija snprintf() vsebuje argument 'n', ki predstavlja največje število znakov, vključno z ničelnim znakom, shranjenih v območju medpomnilnika.

Funkcija snprintf vrne tudi število znakov, ki so vstavljeni ali zapisani v medpomnilnik. Vendar te znake vrne ali prikaže funkcija printf() v stavku za tiskanje ali znaki v datoteki glave stdout.

funkcija snprintf() v C

Opomba: funkcija snprintf() vstavi ničelni znak na konec nastalega izhoda, ki se prav tako šteje kot velikost vmesnega pomnilnika. Poleg tega je vmesni pomnilnik matrika, ki shranjuje samo elemente znakovnega tipa, ne pa nizovnega tipa.

Sintaksa funkcije snprintf() v C

Sledi sintaksa funkcije snprintf() v programskem jeziku c.

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

Parametri:

str : Je vmesni pomnilnik vrste znakov.

velikost : določa največje število znakov, ki jih lahko shrani v medpomnilnik.

format : V jeziku C niz definira obliko, ki vsebuje isto vrsto specifikacij, kot jih definira funkcija printf() v datoteki glave stdio.h.

…: Je neobvezen (…) parameter ali argument.

Vrnjene vrednosti:

Funkcija snprintf() vrne število znakov ali vrednosti, ki so bile zapisane ali shranjene za dovolj velik vmesni pomnilnik brez vključitve ničelnega končnega znaka. In če so zapisani znaki večji od velikosti medpomnilnika, vrne negativno vrednost. In če je velikost medpomnilnika premajhna, bo dani niz okrnjen ali zmanjšan na velikost medpomnilnika.

Primer 1: Program za prikaz funkcije snprintf() v C

Ustvarimo program za preverjanje velikosti medpomnilnika in vrnitev števila znakov, vnesenih v medpomnilnik s funkcijo snprintf() v 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; } 

Ko izvedemo zgornji program, ustvari dani izhod na zaslonu konzole.

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

2ndizvedba

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

Zdaj zmanjšamo največji vhodni znak s 34 na 14 in tokrat vrne negativno število, kar pomeni, da je velikost medpomnilnika manjša od danega niza.

Primer 2: Program za uporabo funkcije snprintf() v C

Ustvarimo primer za vstavljanje znaka v medpomnilnik in vrnitev iz njega s funkcijo snprintf() v programskem 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)>

V zgornjem programu smo deklarirali vrsto znakov buffer buf[200] in spremenljivka buf_size, ki lahko vstavi največje število znakov, je 55. Če je dani stavek v definiranem obsegu, funkcija snprintf() vrne skupno št. znakov, prebranih iz medpomnilnika.

2ndizvedba

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

Ko definiramo buf_size kot 35, je dani stavek samodejno okrnjen s funkcijo snprintf(), ki vrne negativno število (-1) in prikaže 'Predpomnilnik ni popolnoma zapolnjen ali zapisan'.