fprintf é uma f#unção utilizada para imprimir cadeia de caracteres formatadas em um fluxo.
int fprintf (FILE * fluxo, const char* formato, …);
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
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.
#include <stdio.h>
int main() {
/* fprintf(stdout, ...) é equivalente a printf(...) */
fprintf(stdout, "Olá mundo!\n");
return 0;
}
#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;
}