Función de biblioteca C - fprintf ()

Descripción

La función de la biblioteca C int fprintf(FILE *stream, const char *format, ...) envía la salida formateada a una secuencia.

Declaración

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

int fprintf(FILE *stream, const char *format, ...)

Parámetros

  • stream - Este es el puntero a un objeto FILE que identifica la secuencia.

  • format- Esta es la cadena C que contiene el texto que se escribirá en la secuencia. 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 es %[flags][width][.precision][length]specifier, que 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

-

Justifica 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 escribe ningún signo, se inserta un espacio en blanco antes del valor.

4

#

Se usa con especificadores o, x o X. El valor va precedido de 0, 0x o 0X respectivamente para valores distintos 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 a 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).

  • additional arguments- Dependiendo de la cadena de formato, la función puede esperar una secuencia de argumentos adicionales, cada uno con un valor que se insertará en lugar de cada% -tag especificado en el parámetro de formato, si lo hubiera. Debe haber el mismo número de estos argumentos que el número de% -tags que esperan un valor.

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 fprintf ().

#include <stdio.h>
#include <stdlib.h>

int main () {
   FILE * fp;

   fp = fopen ("file.txt", "w+");
   fprintf(fp, "%s %s %s %d", "We", "are", "in", 2012);
   
   fclose(fp);
   
   return(0);
}

Compilemos y ejecutemos el programa anterior que creará un archivo file.txt con el siguiente contenido -

We are in 2012

Ahora veamos el contenido del archivo anterior usando el siguiente programa:

#include <stdio.h>

int main () {
   FILE *fp;
   int c;

   fp = fopen("file.txt","r");
   while(1) {
      c = fgetc(fp);
      if( feof(fp) ) {
         break;
      }
      printf("%c", c);
   }
   fclose(fp);
   return(0);
}

Compilemos y ejecutemos el programa anterior para producir el siguiente resultado.

We are in 2012