logo

snprintf() funkcija C

Šajā sadaļā mēs apspriedīsim snprintf() funkciju C programmēšanas valodā. Snprintf ir iepriekš definēta stdio.h galvenes faila bibliotēkas funkcija, kas novirza standarta funkcijas printf() izvadi uz citiem buferiem.

Funkciju snprint () izmanto, lai bufera apgabalā formatētu dotās virknes rakstzīmju vai vērtību sērijā. Funkcija snprintf() satur 'n' argumentu, kas apzīmē maksimālo bufera apgabalā saglabāto rakstzīmju skaitu, ieskaitot nulles rakstzīmi.

Funkcija snprintf arī atgriež buferī ievietoto vai ierakstīto rakstzīmju skaitu. Tomēr šīs rakstzīmes atgriež vai parāda funkcija printf() drukāšanas priekšrakstā vai rakstzīmes stdout galvenes failā.

snprintf() funkcija C

Piezīme. Funkcija snprintf() ievieto nulles rakstzīmi iegūtās izvades beigās, kas arī tiek uzskatīta par bufera lielumu. Turklāt buferis ir masīvs, kurā tiek glabāti tikai rakstzīmju tipa elementi, nevis virknes tips.

Funkcijas snprintf () sintakse valodā C

Tālāk ir norādīta funkcijas snprintf () sintakse programmēšanas valodā c.

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

Parametri:

str : tas ir rakstzīmju tipa masīva buferis.

Izmērs : tas nosaka maksimālo rakstzīmju skaitu, ko var saglabāt buferī.

formātā : C valodā virkne definē formātu, kas satur tāda paša veida specifikācijas, kādas definē funkcija printf() galvenes failā stdio.h.

…: tas ir neobligāts (…) parametrs vai arguments.

Atgriešanas vērtības:

Funkcija snprintf() atgriež rakstzīmju vai vērtību skaitu, kas ir ierakstītas vai saglabātas pietiekami lielam buferim, neiekļaujot nulles beigu rakstzīmi. Un, ja rakstītās rakstzīmes ir lielākas par bufera lielumu, tas atgriež negatīvu vērtību. Un, ja bufera izmērs ir pārāk mazs, dotā virkne tiks saīsināta vai samazināta līdz bufera izmēram.

1. piemērs: programma snprintf() funkcijas demonstrēšanai programmā C

Izveidosim programmu, lai pārbaudītu bufera lielumu un atgrieztu buferī ievadīto rakstzīmju skaitu, izmantojot C funkciju snprintf().

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

Kad mēs izpildām iepriekš minēto programmu, tā konsoles ekrānā rada norādīto izvadi.

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

2ndizpildi

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

Tagad mēs samazinām maksimālo ievades rakstzīmi no 34 uz 14, un šoreiz tas atgriež negatīvu skaitli, norādot, ka bufera lielums ir mazāks par doto virkni.

2. piemērs: Programma funkcijas snprintf() izmantošanai C

Izveidosim piemēru rakstzīmes ievietošanai buferī un atgriešanai no tā, izmantojot funkciju snprintf() programmēšanas valodā 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)>

Iepriekš minētajā programmā mēs deklarējām rakstzīmju tipu bufera buf[200], un mainīgais buf_size var ievietot maksimālo rakstzīmju skaitu ir 55. Ja dotais priekšraksts atrodas definētajā diapazonā, funkcija snprintf() atgriež kopējo nr. no bufera nolasītām rakstzīmēm.

2ndizpildi

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

Ja mēs definējam buf_size kā 35, doto priekšrakstu automātiski saīsina funkcija snprintf (), kas atgriež negatīvu skaitli (-1) un parāda 'Buferis nav pilnībā aizpildīts vai ierakstīts'.