Funzione di libreria C - fprintf ()

Descrizione

La funzione di libreria C. int fprintf(FILE *stream, const char *format, ...) invia l'output formattato a un flusso.

Dichiarazione

Di seguito è riportata la dichiarazione per la funzione fprintf ().

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

Parametri

  • stream - Questo è il puntatore a un oggetto FILE che identifica il flusso.

  • format- Questa è la stringa C che contiene il testo da scrivere nello stream. Opzionalmente può contenere tag di formato incorporati che vengono sostituiti dai valori specificati negli argomenti aggiuntivi successivi e formattati come richiesto. Il prototipo dei tag di formato è %[flags][width][.precision][length]specifier, che è spiegato di seguito -

Sr.No. specificatore e output
1

c

Carattere

2

d or i

Numero intero decimale con segno

3

e

Notazione scientifica (mantissa / esponente) utilizzando il carattere e

4

E

Notazione scientifica (mantissa / esponente) utilizzando il carattere E

5

f

Virgola mobile decimale

6

g

Utilizza il più breve tra% e o% f

7

G

Utilizza il più breve tra% E o% f

8

o

Firmato ottale

9

s

Stringa di caratteri

10

u

Numero intero decimale senza segno

11

x

Intero esadecimale senza segno

12

X

Intero esadecimale senza segno (lettere maiuscole)

13

p

Indirizzo del puntatore

14

n

Niente stampato

15

%

Carattere

Sr.No. Bandiere e descrizione
1

-

Giustifica a sinistra entro la larghezza del campo data; La giustificazione a destra è l'impostazione predefinita (vedere il specificatore secondario della larghezza).

2

+

Forza a far precedere il risultato con un segno più o meno (+ o -) anche per i numeri positivi. Per impostazione predefinita, solo i numeri negativi sono preceduti dal segno -ve.

3

(space)

Se non viene scritto alcun segno, viene inserito uno spazio vuoto prima del valore.

4

#

Utilizzato con gli specificatori o, x o X. Il valore è preceduto rispettivamente da 0, 0x o 0X per valori diversi da zero. Utilizzato con e, E ed f, forza l'output scritto a contenere un punto decimale anche se non segue alcuna cifra. Per impostazione predefinita, se non segue alcuna cifra, non viene scritto alcun punto decimale. Usato con g o G, il risultato è lo stesso di e o E ma gli zeri finali non vengono rimossi.

5

0

Inserisce a sinistra il numero con zero (0) invece di spazi, dove è specificato il riempimento (vedere il sotto-specificatore di larghezza).

Sr.No. Larghezza e descrizione
1

(number)

Numero minimo di caratteri da stampare. Se il valore da stampare è inferiore a questo numero, il risultato viene riempito con spazi vuoti. Il valore non viene troncato anche se il risultato è maggiore.

2

*

La larghezza non è specificata nella stringa di formato, ma come argomento di un valore intero aggiuntivo che precede l'argomento che deve essere formattato.

Sr.No. .precisione e descrizione
1

.number

Per gli specificatori di numeri interi (d, i, o, u, x, X) - la precisione specifica il numero minimo di cifre da scrivere. Se il valore da scrivere è inferiore a questo numero, il risultato viene riempito con zeri iniziali. Il valore non viene troncato anche se il risultato è più lungo. Una precisione pari a 0 significa che nessun carattere è scritto per il valore 0. Per gli specificatori e, E ed f: questo è il numero di cifre da stampare dopo il punto decimale. Per gli specificatori ge G: questo è il numero massimo di cifre significative da stampare. Per s: questo è il numero massimo di caratteri da stampare. Per impostazione predefinita, tutti i caratteri vengono stampati finché non viene incontrato il carattere nullo finale. Per il tipo c: non ha effetto. Quando non viene specificata alcuna precisione, il valore predefinito è 1. Se il periodo viene specificato senza un valore esplicito per la precisione, viene utilizzato 0.

2

.*

La precisione non è specificata nella stringa di formato, ma come un argomento di valore intero aggiuntivo che precede l'argomento che deve essere formattato.

Sr.No. Lunghezza e descrizione
1

h

L'argomento viene interpretato come int breve o int breve senza segno (si applica solo a specificatori interi: i, d, o, u, x e X).

2

l

L'argomento viene interpretato come un int lungo o un int lungo senza segno per gli specificatori interi (i, d, o, u, x e X) e come un carattere o una stringa di caratteri ampi per gli specificatori c e s.

3

L

L'argomento viene interpretato come un doppio lungo (si applica solo agli specificatori in virgola mobile: e, E, f, ge G).

  • additional arguments- A seconda della stringa di formato, la funzione può aspettarsi una sequenza di argomenti aggiuntivi, ciascuno contenente un valore da inserire invece di ogni tag% specificato nel parametro di formato, se presente. Dovrebbe esserci lo stesso numero di questi argomenti del numero di tag% che si aspettano un valore.

Valore di ritorno

In caso di esito positivo, viene restituito il numero totale di caratteri scritti altrimenti viene restituito un numero negativo.

Esempio

L'esempio seguente mostra l'utilizzo della funzione 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);
}

Compiliamo ed eseguiamo il programma sopra che creerà un file file.txt con il seguente contenuto -

We are in 2012

Vediamo ora il contenuto del file sopra utilizzando il seguente programma:

#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);
}

Compiliamo ed eseguiamo il programma sopra per produrre il seguente risultato.

We are in 2012