A função fscanf () em C ++ é usada para ler os dados do fluxo de arquivos.
protótipo fscanf ()
int fscanf (FILE * stream, const char * format,…);
A fscanf()
função lê os dados do fluxo de arquivos e armazena os valores nas respectivas variáveis.
É definido no arquivo de cabeçalho.
Parâmetros fscanf ()
stream
: Um fluxo de arquivo de entrada para ler os dados.format
: Ponteiro para uma cadeia de caracteres terminada em nulo que especifica como ler a entrada. Consiste em especificadores de formato começando com%.A string de formato tem as seguintes partes:
Non whitespace characters
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.Whitespace character
: 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.Conversion specification
: 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, fscanf () 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 fscanf () 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.
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.
%(*)(width)(length)specifier
- …: Outros argumentos adicionais para receber dados. Eles ocorrem em uma sequência de acordo com o especificador de formato.
fscanf () Valor de retorno
- Se for bem-sucedida, a
fscanf()
função retorna o número de argumentos recebidos atribuídos com sucesso. - Se ocorrer uma falha de correspondência antes de o primeiro argumento de recebimento ser atribuído, retorna zero.
- Se ocorrer uma falha de entrada antes de o primeiro argumento de recebimento ser atribuído, EOF é retornado.
Exemplo: como funciona a função fscanf ()
#include int main () ( FILE *fp; char name(50); int age; fp = fopen("example.txt","w"); fprintf(fp, "%s %d", "Tim", 31); fclose(fp); fp = fopen("example.txt","r"); fscanf(fp, "%s %d", name, &age); fclose(fp); printf("Hello %s, You are %d years old", name, age); return 0; )
Quando você executa o programa, uma possível saída será:
Olá Tim, você tem 31 anos