logo

snprintf()-funktio C:ssä

Tässä osiossa käsittelemme snprintf()-funktiota C-ohjelmointikielessä. snprintf on stdio.h-otsikkotiedoston ennalta määritetty kirjastofunktio, joka ohjaa tavallisen printf()-funktion tulosteen muihin puskureihin.

Funktiota snprint() käytetään muotoilemaan annetut merkkijonot merkki- tai arvosarjaksi puskurialueella. Funktio snprintf() sisältää n-argumentin, joka edustaa puskurialueelle tallennettujen merkkien enimmäismäärää, mukaan lukien nollamerkki.

Snprintf-funktio palauttaa myös puskuriin lisättyjen tai siihen kirjoitettujen merkkien määrän. Nämä merkit kuitenkin palautetaan tai näytetään printf()-funktiolla print-käskyssä tai merkit stdout-otsikkotiedostossa.

snprintf()-funktio C:ssä

Huomautus: Funktio snprintf() lisää tyhjän merkin tuloksena olevan lähdön loppuun, joka lasketaan myös puskurin kooksi. Lisäksi puskuri on taulukko, joka tallentaa vain merkkityyppiset elementit, ei merkkijonotyyppiä.

C:n snprintf()-funktion syntaksi

Seuraavassa on c-ohjelmointikielen snprintf()-funktion syntaksi.

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

Parametrit:

str : Se on merkkityyppinen taulukkopuskuri.

koko : se määrittää puskuriin tallennettavien merkkien enimmäismäärän.

muoto : C-kielessä merkkijono määrittää muodon, joka sisältää samantyyppisiä määrityksiä kuin printf()-funktio määrittää stdio.h-otsikkotiedostossa.

…: Se on valinnainen (…) parametri tai argumentti.

Palautusarvot:

Funktio snprintf() palauttaa niiden merkkien tai arvojen määrän, jotka on kirjoitettu tai tallennettu riittävän suurelle puskurille ilman nolla-päätemerkkiä. Ja jos kirjoitetut merkit ovat suurempia kuin puskurin koko, se palauttaa negatiivisen arvon. Ja jos puskurin koko on liian pieni, annettu merkkijono katkaistaan ​​tai pienennetään puskurin kokoon.

Esimerkki 1: Ohjelma, joka näyttää snprintf()-funktion C:ssä

Luodaan ohjelma, joka tarkistaa puskurin koon ja palauttaa puskuriin syöttävien merkkien lukumäärän käyttämällä C:n snprintf()-funktiota.

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

Kun suoritamme yllä olevan ohjelman, se tuottaa annetun lähdön konsolin näytölle.

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

2ndteloitus

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

Nyt pienennämme maksimisyöttömerkkiä 34:stä 14:ään, ja tällä kertaa se palauttaa negatiivisen luvun, mikä osoittaa, että puskurin koko on pienempi kuin annettu merkkijono.

Esimerkki 2: Ohjelma käyttää snprintf()-funktiota C:ssä

Luodaan esimerkki merkin lisäämisestä puskuriin ja takaisin sieltä käyttämällä snprintf()-funktiota C-ohjelmointikielessä.

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

Yllä olevassa ohjelmassa määritimme merkkityypin puskurin buf[200], ja buf_size-muuttuja voi lisätä enintään 55 merkkiä. Jos annettu käsky on määritetyllä alueella, snprintf()-funktio palauttaa kokonaisnumeron. puskurista luetuista merkeistä.

2ndteloitus

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

Kun määritämme buf_size-arvoksi 35, snprintf()-funktio katkaisee annetun käskyn automaattisesti, joka palauttaa negatiivisen luvun (-1) ja näyttää 'Puskuria ei ole täytetty tai kirjoitettu kokonaan'.