A função vfwscanf () em C ++ é usada para ler uma ampla sequência de caracteres de um fluxo de arquivo.
A função vfwscanf () é definida no arquivo de cabeçalho.
protótipo vfwscanf ()
int vfwscanf (FILE * stream, formato const wchar_t *, va_list vlist);
A função vfwscanf () lê os dados do fluxo de fluxo de arquivos e armazena os valores nos respectivos locais, conforme definido por vlist.
Parâmetros vfwscanf ()
- stream: Fluxo de arquivo de entrada para ler os dados.
- formato: ponteiro para uma cadeia de caracteres ampla 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:- 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, vfwscanf () 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 vfwscanf () 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.
Portanto, o formato geral do especificador de formato é:Especificador% (*) (largura) (comprimento)
- vlist: uma lista de argumentos para receber as entradas.
vfwscanf () Valor de retorno
- Se for bem-sucedido, a função vfwscanf () retorna o número de argumentos lidos com sucesso.
- Em caso de falha, EOF é retornado.
Exemplo: Como funciona a função vfwscanf ()?
#include #include #include #include void read( FILE *fp, const wchar_t* format,… ) ( va_list args; va_start (args, format); vfwscanf (fp, format, args); va_end (args); ) int main () ( setlocale(LC_ALL, "en_US.UTF-8"); wchar_t symbol() = L"u0915u0916u0917u0918u0919"; wchar_t names(5)(5) = (L"Ka", L"Kha", L"Ga", L"Gha", L"Nga"); FILE *fp = fopen("example.txt","w+"); for (int i=0; i<5; i++) fwprintf(fp, L"%lc %ls ", symbol(i), names(i)); rewind(fp); wchar_t ch, str(5); for (int i=0; i<5; i++) ( read(fp, L"%lc %ls ", &ch, str); wprintf(L"%lc - %ls", ch, str); ) fclose(fp); return 0; )
Quando você executa o programa, uma possível saída será:
क - Ka ख - Kha ग - Ga घ - Gha ङ - Nga