logo

snprintf() függvény C-ben

Ebben a részben az snprintf() függvényt tárgyaljuk a C programozási nyelvben. Az snprintf az stdio.h fejlécfájl előre meghatározott könyvtári függvénye, amely átirányítja a szabványos printf() függvény kimenetét más pufferekre.

Az snprint() függvény arra szolgál, hogy a megadott karakterláncokat karakterek vagy értékek sorozatává formázza a pufferterületen. Az snprintf() függvény egy „n” argumentumot tartalmaz, amely a pufferterületen tárolt karakterek maximális számát jelenti, beleértve a null karaktert is.

java string részkarakterlánc

Az snprintf függvény a pufferbe beszúrt vagy beírt karakterek számát is visszaadja. Ezeket a karaktereket azonban a printf() függvény adja vissza vagy jeleníti meg a print utasításban, vagy karaktereket az stdout fejlécfájlban.

snprintf() függvény C-ben

Megjegyzés: Az snprintf() függvény egy null karaktert szúr be az eredményül kapott kimenet végére, amely szintén a puffer méretének számít. Ezenkívül a puffer egy tömb, amely csak karakter típusú elemeket tárol, nem karakterlánctípusban.

Az snprintf() függvény szintaxisa C-ben

A következő az snprintf() függvény szintaxisa a c programozási nyelvben.

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

Paraméterek:

str : Ez egy karakter típusú tömbpuffer.

méret : meghatározza a pufferben tárolható karakterek maximális számát.

formátum : A C nyelvben a karakterlánc olyan formátumot határoz meg, amely ugyanolyan típusú specifikációkat tartalmaz, mint a printf() függvény az stdio.h fejlécfájlban.

…: Ez egy opcionális (…) paraméter vagy argumentum.

Visszatérési értékek:

Az snprintf() függvény visszaadja a kellően nagy pufferhez írt vagy tárolt karakterek vagy értékek számát a null zárókarakter hozzáadása nélkül. És ha az írt karakterek nagyobbak, mint a puffer mérete, akkor negatív értéket ad vissza. És ha a puffer mérete túl kicsi, akkor az adott karakterlánc csonkolva vagy a puffer méretére csökken.

1. példa: Program az snprintf() függvény bemutatására C-ben

string to date konvertálni

Készítsünk egy programot a puffer méretének ellenőrzésére, és a C snprintf() függvényével visszaadjuk a pufferbe a karakterek számát.

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

Amikor a fenti programot végrehajtjuk, a konzol képernyőjén a megadott kimenetet állítja elő.

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

2ndvégrehajtás

java concat karakterláncok
 The given string is: Javatpoint.com Count the stored character: -1 

Most csökkentjük a maximális bemeneti karaktert 34-ről 14-re, és ezúttal negatív számot ad vissza, jelezve, hogy a puffer mérete kisebb, mint a megadott karakterlánc.

2. példa: Program az snprintf() függvény használatára C-ben

Hozzunk létre egy példát a karakter beszúrására a pufferbe, és onnan térjünk vissza az snprintf() függvény segítségével C programozási nyelvben.

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

A fenti programban a puffer buf[200] karaktertípust deklaráltuk, és a buf_size változó maximálisan 55 karaktert tud beszúrni. Ha az adott utasítás a definiált tartományba esik, az snprintf() függvény a teljes számot adja vissza. a pufferből kiolvasott karakterek közül.

2ndvégrehajtás

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

Ha a buf_size-t 35-re definiáljuk, akkor az snprintf() függvény automatikusan csonkolja az adott utasítást, amely negatív számot (-1) ad vissza, és a „puffer nincs teljesen kitöltve vagy beírva” üzenetet jelenít meg.