logo

Funzione snprintf() in C

In questa sezione discuteremo della funzione snprintf() nel linguaggio di programmazione C. snprintf è una funzione di libreria predefinita del file di intestazione stdio.h, che reindirizza l'output della funzione standard printf() ad altri buffer.

La funzione snprint() viene utilizzata per formattare le stringhe fornite in una serie di caratteri o valori nell'area del buffer. La funzione snprintf() contiene un argomento 'n' che rappresenta il numero massimo di caratteri, incluso il carattere null, memorizzati nell'area del buffer.

La funzione snprintf restituisce inoltre il numero di caratteri inseriti o scritti nel buffer. Tuttavia, questi caratteri vengono restituiti o visualizzati dalla funzione printf() nell'istruzione print o dai caratteri nel file di intestazione stdout.

Funzione snprintf() in C

Nota: la funzione snprintf() inserisce un carattere null alla fine dell'output risultante che viene conteggiato anche come dimensione del buffer. Inoltre, il buffer è un array che memorizza solo elementi di tipo carattere, non di tipo stringa.

Sintassi della funzione snprintf() in C

Di seguito è riportata la sintassi della funzione snprintf() nel linguaggio di programmazione c.

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

parametri:

stra : È un buffer di array di tipo carattere.

misurare : definisce il numero massimo di caratteri che possono essere memorizzati nel buffer.

barrato il ribasso

formato : Nel linguaggio C, la stringa definisce un formato che contiene lo stesso tipo di specifiche definite dalla funzione printf() nel file di intestazione stdio.h.

…: È un parametro o argomento facoltativo (…).

Valori restituiti:

La funzione snprintf() restituisce il numero di caratteri o valori che sono stati scritti o memorizzati per un buffer sufficientemente grande senza includere il carattere finale null. E se i caratteri scritti sono più grandi della dimensione del buffer, restituisce un valore negativo. E se la dimensione del buffer è troppo piccola, la stringa data verrà troncata o ridotta alla dimensione del buffer.

Esempio 1: programma per dimostrare la funzione snprintf() in C

Creiamo un programma per controllare la dimensione del buffer e restituire il numero di caratteri immessi nel buffer utilizzando la funzione snprintf() in 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; } 

Quando eseguiamo il programma sopra, produce l'output indicato sullo schermo della console.

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

2ndesecuzione

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

Ora riduciamo il carattere massimo di input da 34 a 14 e questa volta restituisce un numero negativo, indicando che la dimensione del buffer è inferiore alla stringa specificata.

Esempio 2: programma per utilizzare la funzione snprintf() in C

Creiamo un esempio per inserire il carattere nel buffer e ritornare dallo stesso utilizzando la funzione snprintf() nel linguaggio di programmazione C.

cronologia delle versioni di Android
 #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)>

Nel programma precedente, abbiamo dichiarato il tipo di carattere buffer buf[200] e la variabile buf_size può inserire un massimo di 55 caratteri. Se l'istruzione data rientra nell'intervallo definito, la funzione snprintf() restituisce il numero totale. di caratteri letti dal buffer.

2ndesecuzione

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

Quando definiamo buf_size come 35, l'istruzione data viene automaticamente troncata dalla funzione snprintf() che restituisce un numero negativo (-1) e visualizza 'Il buffer non è completamente riempito o scritto'.