C ++ vfscanf () - Biblioteca C ++ Padrão

A função vfscanf () em C ++ é usada para ler os dados de um fluxo de arquivo.

A função vfscanf () é definida no arquivo de cabeçalho.

protótipo vfscanf ()

 int vfscanf (FILE * stream, formato const char *, va_list vlist);

A função vfscanf () lê os dados do fluxo de fluxo de arquivos e armazena os valores nos respectivos locais, conforme definido por vlist.

Parâmetros vfscanf ()

  • stream: Fluxo de arquivo de entrada para ler os dados.
  • formato: ponteiro para uma string de caracteres terminada em nulo que especifica como ler a entrada. Consiste em especificadores de formato começando com%.
  • vlist: Lista de argumentos de variáveis ​​onde os valores devem ser armazenados.
    A string de formato tem as seguintes partes:
    • Caracteres sem espaço em branco, exceto%, cada um dos quais consome um caractere idêntico do fluxo de entrada. Isso pode fazer com que a função falhe se o próximo caractere no fluxo não for igual.
    • Caractere de espaço em branco: todos os caracteres de espaço em branco consecutivos são tratados como um único caractere de espaço em branco. Além disso, ' n', ' t' e '' são considerados iguais.
    • Especificação de conversão: segue o seguinte formato:
      • Caractere% inicial que especifica o início
      • Um * opcional denominado caractere de supressão de atribuição. Se este caractere estiver presente, vfscanf () não atribui o resultado a nenhum argumento receptor.
      • Um número inteiro positivo opcional que especifica a largura máxima do campo. Ele especifica o número máximo de caracteres que vfscanf () pode consumir ao fazer a conversão especificada pela especificação de conversão atual.
      • Um modificador de comprimento opcional que especifica o tamanho do argumento de recebimento.
      • Um especificador de formato de conversão.
    Especificadores de formato
    Especificador de formato Descrição
    % Corresponde ao% literal
    c Corresponde a um único caractere ou a vários caracteres. Se a largura for definida, corresponde exatamente aos caracteres de largura.
    s Corresponde a caracteres consecutivos sem espaço em branco. Se a largura for definida, corresponde exatamente aos caracteres da largura ou até que o primeiro espaço em branco seja encontrado.
    (conjunto) Corresponde a uma sequência não vazia de caracteres de um determinado conjunto de caracteres. Se estiver presente no início do conjunto, todos os caracteres que não estiverem no conjunto serão correspondidos.
    d Corresponde a um número inteiro decimal.
    Eu Corresponde a um número inteiro.
    o Corresponde a um inteiro octal sem sinal.
    X ou x Corresponde a um inteiro hexadecimal sem sinal.
    você Corresponde a um inteiro decimal sem sinal.
    A ou a, E ou e, F ou f, G ou g Corresponde a um número de ponto flutuante.
    n Retorna o número de caracteres lidos até agora.
    p Corresponde a uma sequência de caracteres definida pela implementação que define um ponteiro.

    Portanto, o formato geral do especificador de formato é:
     Especificador% (*) (largura) (comprimento)
  • vlist: uma lista de argumentos para receber as entradas.

vfscanf () Valor de retorno

  • Se for bem-sucedido, a função vfscanf () retorna o número de argumentos lidos com sucesso.
  • Em caso de falha, EOF é retornado.

Exemplo: Como funciona a função vfscanf ()?

 #include #include void read(FILE* fp, const char * format,… ) ( va_list args; va_start (args, format); vfscanf (fp, format, args); va_end (args); ) int main () ( char myFriends(5)(20) = ("Robert", "Syd", "Brian", "Eddie", "Ray"); FILE *fp = fopen("example.txt","w+"); char name(20); for (int i=0; i<5; i++) fprintf(fp, "%s ", myFriends(i)); rewind(fp); printf("Here are the list of my friends"); for (int i=0; i<5; i++) ( read(fp, "%s ", &name); printf("%s", name); ) fclose(fp); return 0; )

Quando você executa o programa, uma possível saída será:

 Aqui está a lista dos meus amigos Robert Syd Brian Eddie Ray

Artigos interessantes...