logo

Fonction snprintf() en C

Dans cette section, nous aborderons la fonction snprintf() dans le langage de programmation C. Le snprintf est une fonction de bibliothèque prédéfinie du fichier d'en-tête stdio.h, qui redirige la sortie de la fonction standard printf() vers d'autres tampons.

La fonction snprint() est utilisée pour formater les chaînes données en une série de caractères ou de valeurs dans la zone tampon. La fonction snprintf() contient un argument 'n' représentant le nombre maximum de caractères, y compris le caractère nul, stockés dans la zone tampon.

La fonction snprintf renvoie également le nombre de caractères insérés ou écrits dans le tampon. Cependant, ces caractères sont renvoyés ou affichés par la fonction printf() dans l'instruction print ou par les caractères dans le fichier d'en-tête stdout.

Fonction snprintf() en C

Remarque : La fonction snprintf() insère un caractère nul à la fin de la sortie résultante qui est également comptée comme la taille du tampon. De plus, le tampon est un tableau qui stocke uniquement les éléments de type caractère, pas dans le type chaîne.

Syntaxe de la fonction snprintf() en C

Voici la syntaxe de la fonction snprintf() dans le langage de programmation c.

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

Paramètres:

str : Il s'agit d'un tampon de tableau de type caractère.

taille : il définit le nombre maximum de caractères pouvant être stockés dans le tampon.

format : En langage C, la chaîne définit un format qui contient le même type de spécifications que celui défini par la fonction printf() dans le fichier d'en-tête stdio.h.

… : Il s’agit d’un paramètre ou d’un argument facultatif (…).

Valeurs de retour :

La fonction snprintf() renvoie le nombre de caractères ou de valeurs qui ont été écrits ou stockés pour un tampon suffisamment grand sans inclure le caractère de fin nul. Et si les caractères écrits sont plus grands que la taille du tampon, cela renvoie une valeur négative. Et si la taille du tampon est trop petite, la chaîne donnée sera tronquée ou réduite à la taille du tampon.

Exemple 1 : Programme pour démontrer la fonction snprintf() en C

si sinon sinon java

Créons un programme pour vérifier la taille du tampon et renvoyons le nombre de caractères saisis dans le tampon à l'aide de la fonction snprintf() en 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; } 

Lorsque nous exécutons le programme ci-dessus, il produit la sortie donnée sur l'écran de la console.

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

2sdexécution

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

Nous réduisons maintenant le caractère d'entrée maximum de 34 à 14, et cette fois, il renvoie un nombre négatif, indiquant que la taille du tampon est inférieure à la chaîne donnée.

Exemple 2 : Programme pour utiliser la fonction snprintf() en C

Créons un exemple pour insérer le caractère dans le tampon et revenir de celui-ci en utilisant la fonction snprintf() en langage de programmation 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)>

Dans le programme ci-dessus, nous avons déclaré le type de caractère buffer buf[200], et la variable buf_size peut insérer le nombre maximum de caractères est de 55. Si l'instruction donnée est dans la plage définie, la fonction snprintf() renvoie le nombre total de caractères. de caractères lus dans le tampon.

2sdexécution

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

Lorsque nous définissons buf_size sur 35, l'instruction donnée est automatiquement tronquée par la fonction snprintf() qui renvoie un nombre négatif (-1) et affiche « Le tampon n'est pas complètement rempli ou écrit ».