logo

snprintf()-functie in C

In deze sectie bespreken we de functie snprintf() in de programmeertaal C. De snprintf is een vooraf gedefinieerde bibliotheekfunctie van het stdio.h-headerbestand, die de uitvoer van de standaard printf()-functie omleidt naar andere buffers.

De functie snprint() wordt gebruikt om de gegeven strings op te maken in een reeks tekens of waarden in het buffergebied. De functie snprintf() bevat een 'n'-argument dat het maximale aantal tekens vertegenwoordigt, inclusief het nulteken, dat in het buffergebied is opgeslagen.

De functie snprintf retourneert ook het aantal tekens dat is ingevoegd of naar de buffer is geschreven. Deze tekens worden echter geretourneerd of weergegeven door de functie printf() in de printinstructie of tekens in het stdout-headerbestand.

snprintf()-functie in C

Opmerking: De functie snprintf() voegt een nulteken in aan het einde van de resulterende uitvoer, dat ook wordt meegeteld als de grootte van de buffer. Bovendien is de buffer een array die alleen karaktertype-elementen opslaat, niet in het stringtype.

Syntaxis van de functie snprintf() in C

Hieronder volgt de syntaxis van de functie snprintf() in de programmeertaal c.

hoe je een string omzet in een int
 int snprintf (char *str, size_t size, const char *format, ?); 

Parameters:

str : Het is een arraybuffer van het tekentype.

maat : het definieert het maximale aantal tekens dat in de buffer kan worden opgeslagen.

formaat : In de C-taal definieert de string een formaat dat hetzelfde type specificaties bevat als de printf()-functie definieert in het stdio.h-headerbestand.

…: Het is een optionele (…) parameter of argument.

kan Android gamepigeon spelen

Retourwaarden:

De functie snprintf() retourneert het aantal tekens of waarden dat is geschreven of opgeslagen voor een voldoende grote buffer, zonder het null-beëindigende teken op te nemen. En als de geschreven tekens groter zijn dan de buffergrootte, retourneert het een negatieve waarde. En als de buffergrootte te klein is, wordt de gegeven string afgekapt of verkleind tot de buffergrootte.

Android-proces acore

Voorbeeld 1: Programma om de functie snprintf() in C te demonstreren

Laten we een programma maken om de buffergrootte te controleren en het aantal ingevoerde tekens terug te sturen naar de buffer met behulp van de snprintf() functie 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; } 

Wanneer we het bovenstaande programma uitvoeren, produceert het de gegeven uitvoer op het consolescherm.

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

2nlexecutie

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

Nu verminderen we het maximale invoerteken van 34 naar 14, en deze keer retourneert het een negatief getal, wat aangeeft dat de buffergrootte kleiner is dan de gegeven string.

java hallo programma

Voorbeeld 2: Programma om de functie snprintf() in C te gebruiken

Laten we een voorbeeld maken om het teken in de buffer in te voegen en daaruit terug te keren met behulp van de functie snprintf() in de programmeertaal 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)>

In het bovenstaande programma hebben we het tekentype buffer buf[200] gedeclareerd, en de variabele buf_size kan het maximale aantal tekens invoegen is 55. Als de gegeven instructie binnen het gedefinieerde bereik valt, retourneert de functie snprintf() het totaal aantal. aantal tekens dat uit de buffer wordt gelezen.

2nlexecutie

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

Wanneer we de buf_size definiëren als 35, wordt de gegeven instructie automatisch afgekapt door de functie snprintf() die een negatief getal (-1) retourneert en 'Buffer is niet volledig gevuld of geschreven' weergeeft.