fprintf  função

fprintf é uma f#unção utilizada para imprimir cadeia de caracteres formatadas em um fluxo.

Protótipo

int fprintf (FILE * fluxo, const char* formato, …);

Parâmetros

fluxo - ponteiro para um objeto FILE que será usado como saída. Além de arquivos, existem duas saídas padrões que podem ser utilizadas:

Nome Descrição
stdout Saída padrão
stderr Saída padrão destinada a erros

formato - Parâmetro contendo a string de formato para o printf

A cadeia de caracteres formato pode conter três tipos de objetos: caracteres normais, que não são processados e são escritos diretamente na saída padrão; caracteres de escape que são convertidos e em seguida escritos na saída padrão, e especificadores, que permitem escrever o conteúdo dos argumentos na saída padrão.

Cada especificador se refere a um argumento, por ordem de aparição. Ou seja, o primeiro especificador é relacionado ao primeiro argumento passado, o segundo especificador ao segundo argumento, e assim por diante. O número de especificadores presentes na cadeia de caracteres formato deve ser igual ao número de argumentos passados à função printf (com exceção do próprio formato).

Um especificador possui o seguinte formato:

%[flags][comprimento][.precisao][tamanho]tipo

O tipo é o único dado obrigatório e representa o tipo da variável passada, todos os outros são opcionais.

Tipo Saída Exemplo
s Cadeia de caracteres string
c Caractere a
d ou i Inteiro decimal contendo sinal (signed) 715 ou -300
u Inteiro sem sinal 1234
o Octal sem sinal 2322
x Hexadecimal sem sinal 4d2
X Hexadecimal sem sinal (letras maiúsculas) 4D2
f Número decimal flutuante 23.45
F Número decimal flutuante 123.45
e Notação científica 1.2345e+2
E Notação científica ("e" maiúsculo) 1.2345E+2
g Menor saída entre %f e %g 123.45
G Menor saída entre %F e %G 123.45
a Número hexadecimal flutuante
A Número hexadecimal flutuante (letras maíusculas)
p Endereço do ponteiro b8000000
n Não imprime nada. O número de caracteres escritos pela função até então é guardado no argumento correspondente passado, que deve ser um ponteiro de tipo signed int.
% Não é um tipo e portanto não possui argumento correspondente. A sequência "%%" na cadeia de caracteres formato imprime um "%" na saída padrão. %

… - Parâmetros adicionais, acompanhando o tipo da string especificada no format

Valor de retorno

Em caso de sucesso, a função retorna o número de caracteres escritos na tela.

Caso um erro de escrita ocorra, a função retorna um número negativo.

Exemplo
#include <stdio.h>

int main() {
    /* fprintf(stdout, ...) é equivalente a printf(...) */
    fprintf(stdout, "Olá mundo!\n");

    return 0;
}
Exemplo: utilizando variáveis, arquivos e stderr
#include <stdio.h>

int main() {
    int n = 2;
    float pi = 3.14159265;

    FILE* arquivo = fopen("saida.txt", "w");
    if(arquivo == NULL) {
        fprintf(stderr, "Erro ao abrir o arquivo.txt.\n");
        return 1;
    }

    fprintf(arquivo, "O número n é %d.\n", n);
    fprintf(arquivo, "pi é um número irracional: %f...\n", pi);
    fclose(arquivo);

    return 0;
}