logo

funkce snprintf() v C

V této části probereme funkci snprintf() v programovacím jazyce C. Snprintf je předdefinovaná knihovní funkce hlavičkového souboru stdio.h, která přesměrovává výstup standardní funkce printf() do jiných vyrovnávacích pamětí.

powershell vs bash

Funkce snprint() se používá k formátování daných řetězců na řadu znaků nebo hodnot v oblasti vyrovnávací paměti. Funkce snprintf() obsahuje argument 'n' představující maximální počet znaků, včetně znaku null, uložených v oblasti vyrovnávací paměti.

Funkce snprintf také vrací počet znaků, které jsou vloženy nebo zapsány do vyrovnávací paměti. Tyto znaky jsou však vráceny nebo zobrazeny funkcí printf() v příkazu print nebo znaky v záhlaví souboru stdout.

funkce snprintf() v C

Poznámka: Funkce snprintf() vloží na konec výsledného výstupu znak null, který se také počítá jako velikost vyrovnávací paměti. Kromě toho je vyrovnávací paměť pole, které ukládá pouze prvky typu znak, nikoli typ řetězec.

Syntaxe funkce snprintf() v C

Následuje syntaxe funkce snprintf() v programovacím jazyce c.

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

Parametry:

str : Jedná se o vyrovnávací paměť pole znakového typu.

velikost : definuje maximální počet znaků, které lze uložit do vyrovnávací paměti.

formát : V jazyce C řetězec definuje formát, který obsahuje stejný typ specifikací, jaký definuje funkce printf() v záhlaví souboru stdio.h.

…: Je to volitelný (…) parametr nebo argument.

řazení vkládání java

Návratové hodnoty:

Funkce snprintf() vrací počet znaků nebo hodnot, které byly zapsány nebo uloženy pro dostatečně velkou vyrovnávací paměť bez zahrnutí ukončovacího znaku null. A pokud jsou zapsané znaky větší než velikost vyrovnávací paměti, vrátí zápornou hodnotu. A pokud je velikost vyrovnávací paměti příliš malá, daný řetězec bude zkrácen nebo zmenšen na velikost vyrovnávací paměti.

Příklad 1: Program pro demonstraci funkce snprintf() v C

Vytvořme program pro kontrolu velikosti vyrovnávací paměti a pomocí funkce snprintf() v jazyce C vrátíme do vyrovnávací paměti počet zadaných znaků.

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

Když spustíme výše uvedený program, vytvoří daný výstup na obrazovce konzole.

kolik filmů s nemožnými úkoly existuje
 The given string is: Javatpoint.com Count the stored character: 16 

2ndprovedení

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

Nyní snížíme maximální vstupní znak z 34 na 14 a tentokrát vrátí záporné číslo, což znamená, že velikost vyrovnávací paměti je menší než daný řetězec.

np.random.rand

Příklad 2: Program pro použití funkce snprintf() v C

Vytvořme příklad pro vložení znaku do bufferu a návrat z něj pomocí funkce snprintf() v programovacím jazyce 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)>

Ve výše uvedeném programu jsme deklarovali znakový typ buffer buf[200] a do proměnné buf_size lze vložit maximum znaků je 55. Pokud je daný příkaz v definovaném rozsahu, funkce snprintf() vrátí celkový počet. znaků načtených z vyrovnávací paměti.

2ndprovedení

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

Když definujeme buf_size jako 35, daný příkaz je automaticky zkrácen funkcí snprintf(), která vrací záporné číslo (-1) a zobrazuje 'Vyrovnávací paměť není zcela vyplněna nebo zapsána'.