Función de biblioteca C - vprintf ()

Descripción

La función de la biblioteca C int vprintf(const char *format, va_list arg) envía salida formateada a stdout usando una lista de argumentos que se le pasa.

Declaración

A continuación se muestra la declaración de la función vprintf ().

int vprintf(const char *format, va_list arg)

Parámetros

  • format- Esta es la cadena que contiene el texto que se escribirá en el búfer. Opcionalmente, puede contener etiquetas de formato incrustadas que se reemplazan por los valores especificados en argumentos adicionales posteriores y se formatean según se solicite. El prototipo de etiquetas de formato sería:%[flags][width][.precision][length]specifier, como se explica a continuación:

No Señor. Especificador y salida
1

c

Personaje

2

d or i

Entero decimal con signo

3

e

Notación científica (mantisa / exponente) usando el carácter e

4

E

Notación científica (mantisa / exponente) usando el carácter E

5

f

Coma flotante decimal

6

g

Usa el más corto de% e o% f

7

G

Utiliza el más corto de% E o% f

8

o

Octal firmado

9

s

Cadena de caracteres

10

u

Entero decimal sin signo

11

x

Entero hexadecimal sin signo

12

X

Entero hexadecimal sin signo (letras mayúsculas)

13

p

Dirección del puntero

14

n

Nada impreso

15

%

Personaje

No Señor. Banderas y descripción
1

-

Justificar a la izquierda dentro del ancho de campo dado; La justificación a la derecha es la predeterminada (consulte el subespecificador de ancho).

2

+

Obliga a preceder el resultado con un signo más o menos (+ o -) incluso para números positivos. De forma predeterminada, solo los números negativos están precedidos por un signo -ve.

3

(space)

Si no se va a escribir ningún signo, se inserta un espacio en blanco antes del valor.

4

#

Usado con especificadores o, xo X, el valor está precedido por 0, 0x o 0X respectivamente para valores diferentes de cero. Usado con e, E yf, obliga a la salida escrita a contener un punto decimal incluso si no le siguen dígitos. De forma predeterminada, si no sigue ningún dígito, no se escribe ningún punto decimal. Usado con go G, el resultado es el mismo que con e o E, pero los ceros finales no se eliminan.

5

0

Rellena a la izquierda el número con ceros (0) en lugar de espacios, donde se especifica el relleno (consulte el subespecificador de ancho).

No Señor. Ancho y descripción
1

(number)

Número mínimo de caracteres a imprimir. Si el valor a imprimir es más corto que este número, el resultado se rellena con espacios en blanco. El valor no se trunca incluso si el resultado es mayor.

2

*

El ancho no se especifica en la cadena de formato, sino como un argumento de valor entero adicional que precede al argumento que se debe formatear.

No Señor. .precisión y descripción
1

.number

Para especificadores de enteros (d, i, o, u, x, X), la precisión especifica el número mínimo de dígitos que se escribirán. Si el valor a escribir es más corto que este número, el resultado se rellena con ceros a la izquierda. El valor no se trunca incluso si el resultado es más largo. Una precisión de 0 significa que no se escribe ningún carácter para el valor 0. Para los especificadores e, E y f: este es el número de dígitos que se imprimirán después del punto decimal. Para especificadores gy G: este es el número máximo de dígitos significativos que se imprimirán. Para s: este es el número máximo de caracteres que se pueden imprimir. De forma predeterminada, todos los caracteres se imprimen hasta que se encuentra el carácter nulo final. Para el tipo c, no tiene ningún efecto. Cuando no se especifica ninguna precisión, el valor predeterminado es 1. Si el período se especifica sin un valor explícito de precisión, se supone 0.

2

.*

La precisión no se especifica en la cadena de formato, sino como un argumento de valor entero adicional que precede al argumento que se debe formatear.

No Señor. Longitud y descripción
1

h

El argumento se interpreta como un int corto o un int corto sin signo (solo se aplica a especificadores de enteros: i, d, o, u, x y X).

2

l

El argumento se interpreta como un int largo o un int largo sin signo para los especificadores de enteros (i, d, o, u, x y X), y como un carácter ancho o una cadena de caracteres amplia para los especificadores c y s.

3

L

El argumento se interpreta como un doble largo (solo se aplica a especificadores de coma flotante: e, E, f, gy G).

  • arg- Un objeto que representa la lista de argumentos variables. Esto debe ser inicializado por la macro va_start definida en <stdarg>.

Valor devuelto

Si tiene éxito, se devuelve el número total de caracteres escritos; de lo contrario, se devuelve un número negativo.

Ejemplo

El siguiente ejemplo muestra el uso de la función vprintf ().

#include <stdio.h>
#include <stdarg.h>

void WriteFrmtd(char *format, ...) {
   va_list args;
   
   va_start(args, format);
   vprintf(format, args);
   va_end(args);
}

int main () {
   WriteFrmtd("%d variable argument\n", 1);
   WriteFrmtd("%d variable %s\n", 2, "arguments");
   
   return(0);
}

Compilemos y ejecutemos el programa anterior que producirá el siguiente resultado:

1 variable argument
2 variable arguments