logo

snprintf() funktion i C

I dette afsnit vil vi diskutere funktionen snprintf() i programmeringssproget C. snprintf er en foruddefineret biblioteksfunktion i stdio.h header-filen, som omdirigerer outputtet af standardprintf()-funktionen til andre buffere.

string.valueof

Funktionen snprint() bruges til at formatere de givne strenge til en række tegn eller værdier i bufferområdet. Funktionen snprintf() indeholder et 'n'-argument, der repræsenterer det maksimale antal tegn, inklusive null-tegnet, gemt i bufferområdet.

Funktionen snprintf returnerer også antallet af tegn, der er indsat eller skrevet til bufferen. Disse tegn returneres eller vises dog af printf()-funktionen i print-sætningen eller tegnene i stdout-header-filen.

snprintf() funktion i C

Bemærk: Funktionen snprintf() indsætter et nul-tegn til slutningen af ​​det resulterende output, der også tælles som størrelsen af ​​bufferen. Desuden er bufferen et array, der kun gemmer tegntypeelementer, ikke i strengtypen.

Syntaks for funktionen snprintf() i C

Følgende er syntaksen for snprintf()-funktionen i programmeringssproget c.

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

Parametre:

str : Det er en arraybuffer af tegntype.

størrelse : det definerer det maksimale antal tegn, der kan lagres i bufferen.

format : I C-sprog definerer strengen et format, der indeholder den samme type specifikationer, som printf()-funktionen definerer i stdio.h-headerfilen.

…: Det er en valgfri (…) parameter eller argument.

Returværdier:

Funktionen snprintf() returnerer antallet af tegn eller værdier, der er blevet skrevet eller gemt til en tilstrækkelig stor buffer uden at inkludere det null-afsluttende tegn. Og hvis de skrevne tegn er større end bufferstørrelsen, returnerer det en negativ værdi. Og hvis bufferstørrelsen er for lille, vil den givne streng blive trunkeret eller reduceret til bufferstørrelsen.

Eksempel 1: Program til at demonstrere funktionen snprintf() i C

Lad os oprette et program til at kontrollere bufferstørrelsen og returnere antallet af tegn enter til bufferen ved hjælp af funktionen snprintf() i 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; } 

Når vi udfører ovenstående program, producerer det det givne output på konsolskærmen.

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

2ndudførelse

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

Nu reducerer vi maks. inputtegnet fra 34 til 14, og denne gang returnerer det et negativt tal, hvilket indikerer, at bufferstørrelsen er mindre end den givne streng.

Eksempel 2: Program til at bruge funktionen snprintf() i C

Lad os oprette et eksempel for at indsætte tegnet i bufferen og returnere fra det samme ved hjælp af funktionen snprintf() i programmeringssproget C.

aes vs des
 #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)>

I ovenstående program erklærede vi tegntypen buffer buf[200], og variablen buf_size kan indsætte det maksimale antal tegn er 55. Hvis den givne sætning er i det definerede område, returnerer funktionen snprintf() det samlede antal. af tegn læst fra bufferen.

2ndudførelse

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

Når vi definerer buf_size som 35, afkortes den givne sætning automatisk af funktionen snprintf() som returnerer et negativt tal (-1) og viser 'Buffer er ikke fuldstændig udfyldt eller skrevet'.