English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial básico do linguagem C

Controle de fluxo do linguagem C

Função do C

Array do C

Ponteiro do C

String do C

Estruturas do linguagem C

Arquivos do linguagem C

Outros C

Manual de referência do linguagem C

Uso e exemplo da função vfprintf() da biblioteca C

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.

Declaração

A seguir está a declaração da função vfprintf().

int vfprintf(FILE *stream, const char *format, va_list arg)

parâmetros

  • stream -- Este é um ponteiro para o objeto FILE, que identifica o fluxo.
  • format -- Esta é uma string C, que contém o texto a ser escrito no fluxo stream. Ele pode conter etiquetas de formato, que podem ser substituídas pelos valores especificados nos parâmetros adicionais subsequentes e formatados conforme necessário. As propriedades das etiquetas de formato são %[flags][width][.precision][length]specifierexplicação detalhada a seguir:
specifier (indicador)saída
ccaractere
d ou iinteiro decimal com sinal
enotação científica com caractere e (subscrito e expoente)
Enotação científica com caractere E (subscrito e expoente)
fnúmero decimal de ponto flutuante
gescolhe automaticamente a representação adequada de %e ou %f
Gescolhe automaticamente a representação adequada de %E ou %f
ooctal com sinal
sstring de caractere
uinteiro decimal sem sinal
xinteiro hexadecimal sem sinal
Xinteiro hexadecimal sem sinal (letras maiúsculas)
pendereço de ponteiro
nsem 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.
0Coloca 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
.numberPara 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
hOs parâmetros são interpretados como tipo short ou unsigned short (apenas para os descritores de inteiros: i, d, o, u, x e X).
lOs 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).
LOs parâmetros são interpretados como tipo long double (apenas para os descritores de ponto flutuante: e, E, f, g e G).
  • arg -- Um objeto que representa a lista de parâmetros variáveis. Deve ser inicializado pelo macro va_start definido em <stdarg>.

Retorno

Se for bem-sucedido, retorna o número total de caracteres escritos, caso contrário, retorna um número negativo.

Exemplo online

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

Biblioteca padrão do C - <stdio.h>