En esta sección, discutiremos la función snprintf() en el lenguaje de programación C. snprintf es una función de biblioteca predefinida del archivo de encabezado stdio.h, que redirige la salida de la función estándar printf() a otros buffers.
La función snprint() se utiliza para formatear las cadenas dadas en una serie de caracteres o valores en el área del búfer. La función snprintf() contiene un argumento 'n' que representa el número máximo de caracteres, incluido el carácter nulo, almacenados en el área del búfer.
La función snprintf también devuelve el número de caracteres que se insertan o escriben en el búfer. Sin embargo, estos caracteres son devueltos o mostrados por la función printf() en la declaración de impresión o caracteres en el archivo de encabezado stdout.
Nota: La función snprintf() inserta un carácter nulo al final de la salida resultante que también se cuenta como el tamaño del búfer. Además, el búfer es una matriz que almacena solo elementos de tipo carácter, no del tipo cadena.
Sintaxis de la función snprintf() en C
A continuación se muestra la sintaxis de la función snprintf() en el lenguaje de programación c.
int snprintf (char *str, size_t size, const char *format, ?);
Parámetros:
cadena : Es un buffer de matriz de tipo carácter.
tamaño : define el número máximo de caracteres que se pueden almacenar en el buffer.
formato : En lenguaje C, la cadena define un formato que contiene el mismo tipo de especificaciones que la función printf() define en el archivo de encabezado stdio.h.
…: Es un parámetro o argumento opcional (…).
Valores de retorno:
La función snprintf() devuelve el número de caracteres o valores que se han escrito o almacenado para un búfer suficientemente grande sin incluir el carácter de terminación nulo. Y si los caracteres escritos son mayores que el tamaño del búfer, devuelve un valor negativo. Y si el tamaño del búfer es demasiado pequeño, la cadena dada se truncará o se reducirá al tamaño del búfer.
Ejemplo 1: Programa para demostrar la función snprintf() en C
Creemos un programa para verificar el tamaño del búfer y devolver el número de caracteres ingresados al búfer usando la función 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; }
Cuando ejecutamos el programa anterior, produce el resultado dado en la pantalla de la consola.
The given string is: Javatpoint.com Count the stored character: 16
2Dakota del Norteejecución
The given string is: Javatpoint.com Count the stored character: -1
Ahora reducimos el carácter de entrada máximo de 34 a 14 y esta vez devuelve un número negativo, lo que indica que el tamaño del búfer es menor que la cadena dada.
Ejemplo 2: Programa para utilizar la función snprintf() en C
Creemos un ejemplo para insertar el carácter en el búfer y regresar del mismo usando la función snprintf() en el lenguaje de programación C.
#include #include int main () { char buf[200]; // define the size of character type buffer int ret_val, buf_size = 55; char name[] = 'David'; // 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, 'Hello friend, My name is %s, and I am %d years old.', name, age); /* check ret_value should be greater than 0 and less than the size of the buffer (buf_size). */ if ( ret_val > 0 && 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 'Buffer is not completely filled or written'.</p> <hr></buf_size)>
En el programa anterior, declaramos el búfer de tipo de carácter buf[200], y la variable buf_size puede insertar el máximo de caracteres es 55. Si la declaración dada está en el rango definido, la función snprintf() devuelve el número total. de caracteres leídos del búfer.
2Dakota del Norteejecución
Buffer is not completely filled or written. Hello friend, My name is David and The return value: -1
Cuando definimos buf_size como 35, la declaración dada se trunca automáticamente mediante la función snprintf() que devuelve un número negativo (-1) y muestra 'El búfer no está completamente lleno o escrito'.