English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Biblioteca padrão do C - <stdio.h>
Função da biblioteca C int vfprintf(FILE *stream, const char *format, va_list arg) Enviar saída formatada para o fluxo stream usando a lista de parâmetros.
A seguir está a declaração da função vfprintf().
int vfprintf(FILE *stream, const char *format, va_list arg)
specifier (indicador) | saída |
---|---|
c | caractere |
d ou i | inteiro decimal com sinal |
e | notação científica com caractere e (subscrito e expoente) |
E | notação científica com caractere E (subscrito e expoente) |
f | número decimal de ponto flutuante |
g | escolhe automaticamente a representação adequada de %e ou %f |
G | escolhe automaticamente a representação adequada de %E ou %f |
o | octal com sinal |
s | string de caractere |
u | inteiro decimal sem sinal |
x | inteiro hexadecimal sem sinal |
X | inteiro hexadecimal sem sinal (letras maiúsculas) |
p | endereço de ponteiro |
n | sem saída |
% | caractere |
flags (sinais) | Descrição |
---|---|
- | alinhamento à esquerda dentro do campo width fornecido, o padrão é alinhamento à direita (ver subindicador width). |
+ | força a exibição de um sinal (+ ou -) no início do resultado (+ ou -), ou seja, números positivos terão + padrão, apenas números negativos terão um - sinal. |
(space) | Se nenhum sinal for escrito, uma espaçamento será inserido antes do valor. |
# | Quando usado com o, x ou X, os valores não nulos são precedidos por 0, 0x ou 0X, respectivamente. Quando usado com e, E e f, força a impressão de um ponto decimal, mesmo que não haja números após ele. Padrãomente, se não houver números após ele, o ponto decimal não é impresso. Quando usado com g ou G, o resultado é o mesmo que usar e ou E, mas os zeros ao final não são removidos. |
0 | Coloca zeros (0) à esquerda do número especificado para preencher, em vez de espaços (ver subindicador width). |
width (largura) | Descrição |
---|---|
(number) | Número mínimo de caracteres a serem impressos. Se o valor impresso for mais curto do que esse número, o resultado será preenchido com espaços. Se o valor impresso for mais longo do que esse número, o resultado não será truncado. |
* | Largura não especificada na string format, mas será colocada como parâmetro inteiro adicional antes do parâmetro a ser formatado. |
.precision (precisão) | Descrição |
---|---|
.number | Para o marcador de inteiro (d, i, o, u, x, X): precision indica o número mínimo de dígitos a serem escritos. Se o valor escrito for mais curto do que esse número, o resultado será preenchido com zeros à esquerda. Se o valor escrito for mais longo do que esse número, o resultado não será truncado. A precisão 0 significa que nenhum caractere será escrito. Para os descritores e, E e f: o número de dígitos decimais a serem impressos após o ponto decimal. Para os descritores g e G: o número máximo de dígitos significativos a serem impressos. Para o tipo s: o número máximo de caracteres a serem impressos. Padrão é imprimir todos os caracteres até o caractere nulo final. Para o tipo c: não tem efeito. Quando não especificada, o padrão é 1. Se especificado sem um valor explícito, é assumido como 0. |
.* | A precisão não é especificada no string format, mas será colocada como valor inteiro adicional antes dos parâmetros a serem formatados. |
Tamanho (length) | Descrição |
---|---|
h | Os parâmetros são interpretados como tipo short ou unsigned short (apenas para os descritores de inteiros: i, d, o, u, x e X). |
l | Os parâmetros são interpretados como tipo long ou unsigned long, aplicáveis aos descritores de inteiros (i, d, o, u, x e X) e ao descritor c (representando um caractere amplo) e s (representando uma string de caracteres amplos). |
L | Os parâmetros são interpretados como tipo long double (apenas para os descritores de ponto flutuante: e, E, f, g e G). |
Se for bem-sucedido, retorna o número total de caracteres escritos, caso contrário, retorna um número negativo.
O exemplo a seguir demonstra o uso da função vfprintf().
#include <stdio.h> #include <stdarg.h> void WriteFrmtd(FILE *stream, char *format, ...) { va_list args; va_start(args, format); vfprintf(stream, format, args); va_end(args); } int main () { FILE *fp; fp = fopen("file.txt","w"); WriteFrmtd(fp, "This is just one argument %d \n", 10); fclose(fp); return(0); }
Vamos compilar e executar o programa acima, o que abrirá o arquivo no diretório atual file.txte escrever o seguinte conteúdo:
This is just one argument 10
Agora vamos usar o seguinte programa para visualizar o conteúdo do arquivo acima:
#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); }