logo

Funcția snprintf() în C

În această secțiune, vom discuta despre funcția snprintf() în limbajul de programare C. snprintf este o funcție de bibliotecă predefinită a fișierului antet stdio.h, care redirecționează ieșirea funcției standard printf() către alte buffere.

Funcția snprint() este folosită pentru a formata șirurile date într-o serie de caractere sau valori în zona tampon. Funcția snprintf() conține un argument „n” reprezentând numărul maxim de caractere, inclusiv caracterul nul, stocat în zona tampon.

Funcția snprintf returnează, de asemenea, numărul de caractere care sunt inserate sau scrise în buffer. Cu toate acestea, aceste caractere sunt returnate sau afișate de funcția printf() în instrucțiunea print sau caracterele din fișierul antet stdout.

Funcția snprintf() în C

Notă: Funcția snprintf() inserează un caracter nul la sfârșitul rezultatului rezultat care este, de asemenea, numărat ca dimensiunea tamponului. În plus, buffer-ul este o matrice care stochează doar elemente de tip caracter, nu în tipul șir.

Sintaxa funcției snprintf() în C

Mai jos este sintaxa funcției snprintf() în limbajul de programare c.

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

Parametri:

str : este un buffer de tip matrice de caractere.

mărimea : definește numărul maxim de caractere care pot fi stocate în buffer.

format : În limbajul C, șirul definește un format care conține același tip de specificații ca și funcția printf() definește în fișierul antet stdio.h.

…: Este un parametru sau argument opțional (…).

Valori returnate:

Funcția snprintf() returnează numărul de caractere sau valori care au fost scrise sau stocate pentru un buffer suficient de mare fără a include caracterul de terminare nul. Și dacă caracterele scrise sunt mai mari decât dimensiunea bufferului, returnează o valoare negativă. Și dacă dimensiunea tamponului este prea mică, șirul dat va fi trunchiat sau redus la dimensiunea tamponului.

Exemplul 1: Program pentru a demonstra funcția snprintf() în C

Să creăm un program pentru a verifica dimensiunea bufferului și a returna numărul de caractere introduse în buffer folosind funcția snprintf() din 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; } 

Când executăm programul de mai sus, acesta produce rezultatul dat pe ecranul consolei.

mysql nu este egal
 The given string is: Javatpoint.com Count the stored character: 16 

2ndexecuţie

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

Acum reducem caracterul maxim de intrare de la 34 la 14 și, de data aceasta, returnează un număr negativ, indicând că dimensiunea tamponului este mai mică decât șirul dat.

Exemplul 2: Program pentru a utiliza funcția snprintf() în C

Să creăm un exemplu pentru a insera caracterul în buffer și a reveni din același folosind funcția snprintf() în limbajul de programare 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)>

În programul de mai sus, am declarat tipul de caracter buffer buf[200], iar variabila buf_size poate insera caractere maxime este de 55. Dacă instrucțiunea dată este în intervalul definit, funcția snprintf() returnează numărul total. de caractere citite din buffer.

2ndexecuţie

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

Când definim buf_size ca 35, instrucțiunea dată este trunchiată automat de funcția snprintf() care returnează un număr negativ (-1) și afișează „Bufferul nu este complet completat sau scris”.