C ++ sscanf () - Biblioteca padrão C ++

A função sscanf () em C ++ é usada para ler os dados do buffer de string.

protótipo sscanf ()

 int sscanf (const char * buffer, const char * formato,…);

A sscanf()função lê os dados, lê os dados do buffer e armazena os valores nas respectivas variáveis.

É definido no arquivo de cabeçalho.

Parâmetros sscanf ()

  • buffer: Ponteiro para uma string de caracteres terminada em nulo 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 charactersexceto% 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.
    Portanto, o formato geral do especificador de formato é: %(*)(width)(length)specifier
  • …: Outros argumentos adicionais para receber dados. Eles ocorrem em uma sequência de acordo com o especificador de formato.

sscanf () Valor de retorno

  • Se for bem-sucedida, a sscanf()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 sscanf ()

 #include int main () ( char fname(50), lname(50); char buffer() = "Dennis Ritchie"; sscanf(buffer, "%s %s", fname, lname); printf("First name : %s Last name : %s", fname, lname); return 0; )

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

 Primeiro nome: Dennis Sobrenome: Ritchie

Artigos interessantes...