VSNPRINTF Función en C

VSNPRINTF Función en C

Vsnprintf () es un tipo de función que se utiliza para imprimir la matriz de caracteres utilizando los datos formateados en las listas de argumentos. En palabras simples, esta función simplemente escribe los datos ya formateados que se almacenan en los argumentos de "tipo" de la lista de variables en una cadena de búfer. Esta función compone una cadena si usamos el mismo formato que en el argumento variable en el método printf (). Pero utiliza los elementos ya identificados de los argumentos en la lista de argumentos de variables y almacena el resultado en la forma de la cadena de búfer en C que es señalado por el puntero de la matriz donde la salida se imprime en los argumentos. También toma el tamaño del búfer o la capacidad de la matriz para llenar los números en términos de caracteres.

Procedimiento

Este artículo discutirá cómo aprenderemos el concepto detrás de los métodos vsnprintf (). También mostrará el orden en el que conoceremos la sintaxis para esta función con la implementación de la función en diferentes ejemplos. Por último, concluiremos nuestro tema para permitirnos revisar lo que aprendimos hasta ahora en el artículo sobre el tema - VSNPrintf () Función.

Sintaxis

La función vsnprintf se escribe y se declara en el mismo que escribimos cualquier otra función. Pero la lista de argumentos para esta función varía un poco. La función vsnprintf () con su lista de argumentos se da en lo siguiente:

$ Int vsnprintf (Char * Array, size_length_array, const wchar_t * format, va_ ​​list args)

Ahora discutimos el requisito de cada argumento para esta función uno por uno. El primer argumento es el puntero que apunta a la matriz de "char" del tipo de datos donde queremos imprimir la salida. El segundo argumento representa los caracteres máximos que la matriz puede almacenar en él. El tercer argumento representa el puntero de formato que apunta al formato en el que queremos imprimir la salida. Y el último es "VA_List Args", que se sabe que es un tipo que contiene la información necesaria sobre los argumentos variables de las funciones. Aquí, actúa como un puntero que apunta a la lista de argumentos.

Tipo de retorno

El tipo de retorno de esta función es enteros. Esta función devuelve los caracteres si y solo si el programa tiene éxito sin contar los caracteres nulos para la terminación. Podría devolver un valor negativo en caso de falla del programa.

Ejemplo:

Iniciamos la implementación de la función mencionada previamente, la función vsnprintf (), con la ayuda de este ejemplo. Implementamos este ejemplo en Microsoft Visual Studio en el lenguaje de programación C. La función vsnprintf () se usa para escribir/imprimir la lista de argumentos variables formateados en la cadena de matriz o búfer. Por lo tanto, primero creamos una lista de argumentos variables en este ejemplo y luego usamos esta lista de argumentos para imprimir una matriz de "char" de tipo de datos.

Para comenzar con un ejemplo, cree un nuevo proyecto en Visual Studio. Para hacer que este proyecto acceda a las bibliotecas fundamentales de la C, agregue el proyecto a la ruta de los archivos C agregando el archivo fuente ".Extensión C "con el nombre del proyecto y guárdelo. El siguiente y el paso más básico al crear un programa es importar las bibliotecas especiales al programa para que pueda acceder a las funciones predeterminadas requeridas proporcionadas por estas bibliotecas más adelante en el programa. Importamos los siguientes dos archivos de encabezado para este programa:

$ # incluir
$ # incluir

El primer archivo de encabezado se asegura de incluir las funciones para printf () y scanf (). El segundo es el archivo de encabezado que importamos especialmente para usar el método vsnprintf () después de crear la lista de argumentos variables. Después de incluir los dos archivos de encabezado anteriores en el proyecto, estamos listos para implementar la parte de nuestro programa que se ocupa de la construcción de código para nuestro ejemplo. Creamos una función con el tipo de retorno de "INT" entero y nombrar esta función para ser "FormatedList". Esta función replica todos los parámetros que ya discutimos en este artículo para la función vsnprintf () como argumentos de la función. El primer parámetro que pasamos a esta función es el puntero a la matriz donde se escribe la salida y luego se imprime. Luego, damos el tamaño de esta matriz y pasamos el formato en el que imprimimos nuestra matriz en esta función.

Primero inicializamos la longitud del búfer para ser "0". Luego, creamos o inicializamos una lista de argumentos variables para esta función con el tipo "VA_LIST" y el nombre "Argumentos". Luego, comenzamos esta lista VA_ llamando al "VA_START ()" y lo pasamos el formato y los argumentos como sus parámetros. Luego definimos la longitud para el búfer llamando al VSNPrintf () y pasamos todos los objetos para los punteros que definimos en los parámetros de la función "FormatedList". Terminamos la lista de argumentos llamando al va_end () y salimos de la función devolviendo la longitud.

Ahora, declaramos la función principal. En esta función principal, declaramos una matriz de "búfer" con el tamaño de "50". Luego, creamos la matriz de argumentos del tamaño "50" y lo asignamos con los personajes "Lo hiciste bien". Luego, inicializamos la longitud en esta función principal nuevamente y llamamos a la función FormattedList () y la pasamos de los parámetros de acuerdo con los parámetros que definimos anteriormente para la longitud al crear la "función de lista de formato". Esta vez, pasamos los "argumentos" como un parámetro para esta función. Luego, mostramos esta longitud y la matriz llamando al método printf () como se muestra en el siguiente fragmento de código:

# incluir
# incluir
int formattedList (char* buffer, int buffersize, const char* format, ...)

int longitud = 0; m
VA_LIST Argumentos;
VA_START (argumentos, formato);
longitud = vsnprintf (buffer, buffersize, formato, argumentos);
VA_END (argumentos);
longitud de retorno;

int main ()

buffer de char [50];
argumentos de char [50] = "lo hiciste bien";
int longitud = formattedList (búfer, 50, "%s", argumentos);
printf ("Array: %s \ n", buffer);
printf ("Números en la matriz: %d \ n", longitud);
regresar 0;


Después de la ejecución del programa mencionado anteriormente, primero compuso una cadena formateada e imprimió esta cadena formateada en forma del búfer de cadena o matriz de caracteres.

Conclusión

Este artículo nos guía sobre cómo podemos usar el concepto de la función vsnprinft () para imprimir la matriz de "char" de caracteres de tipo de datos desde la lista de argumentos que ya están formateados. Hemos hecho un ejemplo sobre esta función para eliminar los pensamientos y tener una experiencia práctica sobre este tema.