Función snprintf en c

Función snprintf en c
En la función snprintf (), queremos aprender a formatear los datos. El formato de datos es esencial cuando estamos escribiendo algún estado del proceso o cualquier módulo en un archivo, y otro módulo puede acceder a eso. Para ese propósito, queremos compartir estos datos entre módulos. En este caso, queremos formatear nuestros datos para que otros módulos puedan entenderlo de la misma manera.

prototipo de función snprintf ()

La función snprintf () es un tipo de datos predefinidos. Su definición está escrita en un archivo de encabezado estándar en C llamado archivo de encabezado.

Características de la función snprintf ()

int snprintf (char *st, max_size, const char *format, .. .);

Aquí, usamos varios parámetros, como la función de estos parámetros:

  • *st es un búfer que puede contener la cadena.
  • max_size: el mayor número de caracteres que un búfer puede contener.
  • Formato que contiene una cadena y otras especificaciones como la función printf ().
  • La función snprintf () devuelve un valor entero, y su trabajo es contar el número de caracteres dentro del búfer.

Programación Ejemplo 1

Aquí, veremos la implementación de la función snprintf ():

#incluir
#incluir
int main ()

char buff_max [15]; // declarando una cadena
int x = 15;
Doble y = 26.5;
snprintf (buff_max, 14, "examinar la prueba de desbordamiento, los valores de x = %d e y = %lf", x, y); // usos de la función snprintf ()
printf (" %s \ n", buff_max); // Imprima el valor de la cadena
regresar 0;

Producción

Explicación

En este ejemplo de programación, usaremos la función snprintf () para formatear una cadena. Aquí, declaramos una cadena llamada "buff_max", que contiene un máximo de 15 caracteres, excepto que declaramos un tipo entero variable x y tipo doble variable y.

Ahora, si usamos la función snprintf (), debemos pasar algunos argumentos dentro de su paréntesis. Los argumentos son los primeros de todas las cuerdas. Tenemos que mencionar el tamaño que puede acumular el búfer; El tercer parámetro es la cadena formateada y luego la variable.

La ventaja de usar la función snprintf () es que solo se pueden imprimir 14 caracteres, y el resto de los caracteres se ignoran. El programa será seguro y el programa no se está bloqueando.

Programación Ejemplo 2

En este ejemplo de programación, veremos otro ejemplo de función snprintf ():

#incluir
#incluir
#define max_buff 1024
#define size_name (15)
estructura typedef

nombre de char [size_name]; // declarando una cadena
Unsigned int rollno;
doble marcas;
ALUMNO ; // Creación de tipos de datos definidos por el usuario
int main (intargc, char *argv [])

Char Buffer [max_buff] = 0;
Estudiante S1 = .nombre = "Avishek" , .Rollno = 6 , .Marcas = 77.17;
SNPRINTF (búfer, sizeOf (búfer), " %s %d %lf", S1.Nombre, S1.Rollno, S1.marcas ) ; // usos de la función snprintf ()
printf ("buffer = %s \ n", buffer);
regresar 0;

Producción

Explicación

En este ejemplo de programación, definiremos el nombre de la estructura ALUMNO. Los miembros de los datos del ALUMNO son nombre, rollo no y marcas. Dentro de la función principal (). Declaramos una variable S1 que es el tipo de datos de estudiante. Si queremos imprimir el valor de cada disuasión de la variable S1, usaremos la función snprintf (). Los parámetros del snPrintf son el búfer, el tamaño del búfer, el formato de la cadena y todos los miembros de los datos que deben formatearse. Si imprimemos el búfer, la salida se mostrará al monitor como salida formateada.

Programación Ejemplo 3

Tomemos otro ejemplo importante de la función snprintf () y cómo funciona.

#incluir
#incluir
#incluir
#define size_buffer 1024
#define size_name (20)
#define format_string "(%s,%d,%0.2lf) ","
#define size_buffer 1024
#define size_name (20)
#define format_string "(%s,%d,%0.2lf) ","
estructura typedef

nombre de char [size_name];
Unsigned int rollno;
doble porcentaje;
PERSONA ; // Definición de una estructura.
int main (intargc, char *argv [])

Char Buffer [size_buffer] = 0; // declarando un búfer.
Persona student_data [] = .nombre = "raul", .Rollno = 1020, .porcentaje = 72.30334, \
.nombre = "Pablo", .Rollno = 1021, .porcentaje = 86.3456 \
; // Creación de una matriz de estructura.
int num_students = sizeof (student_data)/sizeof (persona);
int pos = 0;
para (int i = 0; i
pos += snprintf (buffer +pos, sizeof (buffer), format_string, student_data [i].Nombre, Student_Data [i].rollo,
student_data [i].porcentaje) ;

printf ("buffer = [ %s] \ n", buffer);
regresar 0;

Producción

Explicación

Aquí, tomamos una variedad de estructuras y vemos el proceso de función snprintf (). Definimos una estructura llamada PERSONA, y dentro de la función principal (), declararemos una matriz de las estructuras de la PERSONA tipo de datos y asignar algún valor a esta matriz. Podemos usar un bucle para el mostrador. Por fin, imprimiremos todo el búfer con todos los datos. Estamos iterando continuamente sobre esta variedad de estructuras. Ahora, guardamos todos los datos en este búfer, dependiendo de la posición.

Por primera vez, llegó el primer estudiante, y escribirá algunos datos sobre este búfer. Luego, el valor de la posición cambiará y el búfer se escribirá para esa posición. Asi es como funciona.

Ventaja de usar la función snprintf ()

La ventaja de usar la función snprintf () es que suponga que el búfer se desborda por el carácter de su tamaño máximo. El programa estará seguro para evitar un bloqueo. El resto de los personajes son ignorados por la función snprintf (), que ejecutará el programa.

Conclusión

En el idioma C, similar a la función printf (), se usa otra función llamada snprintf () para formatear la cadena. Para resolver el problema de usar la función sprintf (), el snprintf () se lleva a la biblioteca C para hacer que el programa sea más seguro y elegante. En este artículo, discutimos la función snprintf () en los ejemplos proporcionados.