logo

snprintf()-Funktion in C

In diesem Abschnitt besprechen wir die Funktion snprintf() in der Programmiersprache C. snprintf ist eine vordefinierte Bibliotheksfunktion der Header-Datei stdio.h, die die Ausgabe der Standardfunktion printf() an andere Puffer umleitet.

Die Funktion snprint() wird verwendet, um die angegebenen Zeichenfolgen in eine Reihe von Zeichen oder Werten im Pufferbereich zu formatieren. Die Funktion snprintf() enthält ein „n“-Argument, das die maximale Anzahl von Zeichen, einschließlich des Nullzeichens, darstellt, die im Pufferbereich gespeichert sind.

Die Funktion snprintf gibt außerdem die Anzahl der Zeichen zurück, die eingefügt oder in den Puffer geschrieben werden. Diese Zeichen werden jedoch von der printf()-Funktion in der print-Anweisung oder den Zeichen in der stdout-Headerdatei zurückgegeben oder angezeigt.

snprintf()-Funktion in C

Hinweis: Die Funktion snprintf() fügt am Ende der resultierenden Ausgabe ein Nullzeichen ein, das auch als Puffergröße gezählt wird. Darüber hinaus ist der Puffer ein Array, das nur Elemente vom Typ Zeichen speichert, nicht vom Typ String.

Syntax der Funktion snprintf() in C

Im Folgenden finden Sie die Syntax der Funktion snprintf() in der Programmiersprache c.

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

Parameter:

str : Es handelt sich um einen Array-Puffer vom Typ Zeichen.

fcfs

Größe : Es definiert die maximale Anzahl von Zeichen, die im Puffer gespeichert werden können.

Format : In der C-Sprache definiert die Zeichenfolge ein Format, das denselben Typ von Spezifikationen enthält, den die Funktion printf() in der Header-Datei stdio.h definiert.

…: Es ist ein optionaler (…) Parameter oder Argument.

Rückgabewerte:

Die Funktion snprintf() gibt die Anzahl der Zeichen oder Werte zurück, die für einen ausreichend großen Puffer geschrieben oder gespeichert wurden, ohne das Null-Abschlusszeichen einzubeziehen. Und wenn die geschriebenen Zeichen größer als die Puffergröße sind, wird ein negativer Wert zurückgegeben. Und wenn die Puffergröße zu klein ist, wird die angegebene Zeichenfolge abgeschnitten oder auf die Puffergröße reduziert.

Beispiel 1: Programm zur Demonstration der Funktion snprintf() in C

Mitteltaste CSS

Erstellen wir ein Programm, um die Puffergröße zu überprüfen und die Anzahl der eingegebenen Zeichen mithilfe der Funktion snprintf() in C in den Puffer zurückzugeben.

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

Wenn wir das obige Programm ausführen, erzeugt es die angegebene Ausgabe auf dem Konsolenbildschirm.

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

2ndAusführung

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

Jetzt reduzieren wir das maximale Eingabezeichen von 34 auf 14, und dieses Mal wird eine negative Zahl zurückgegeben, was darauf hinweist, dass die Puffergröße kleiner als die angegebene Zeichenfolge ist.

Beispiel 2: Programm zur Verwendung der Funktion snprintf() in C

Lassen Sie uns ein Beispiel erstellen, um das Zeichen in den Puffer einzufügen und von dort zurückzukehren, indem wir die Funktion snprintf() in der Programmiersprache C verwenden.

Java-Boolescher String
 #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)>

Im obigen Programm haben wir den Zeichentyppuffer buf[200] deklariert, und die Variable buf_size kann maximal 55 Zeichen einfügen. Wenn die angegebene Anweisung im definierten Bereich liegt, gibt die Funktion snprintf() die Gesamtanzahl zurück. Anzahl der aus dem Puffer gelesenen Zeichen.

2ndAusführung

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

Wenn wir buf_size als 35 definieren, wird die angegebene Anweisung automatisch von der Funktion snprintf() abgeschnitten, die eine negative Zahl (-1) zurückgibt und „Puffer ist nicht vollständig gefüllt oder geschrieben“ anzeigt.