Sscanf c ++

Sscanf c ++

C ++ é uma das linguagens de programação mais antigas e mais antigas, ideais para o desenvolvimento de sistemas operacionais. Oferece alto desempenho e grande velocidade e abrange vários tipos de aplicações. Ele fornece uma sintaxe muito avançada, tornando -se complexo e difícil de aprender. Sua funcionalidade interna, no entanto, é bastante útil para criar qualquer tipo de aplicação. Converter números de cordas ou cordas de números é uma tarefa bastante confusa. Portanto, precisamos de algumas funções que possam ser usadas com a conversão de num em str ou str para num. Aqui, aprenderemos a usar a função sscanf para converter uma entrada em um tipo especificado de saída.

A função sscanf c ++

A função SSCANF é uma das funções C ++ mais usadas para converter números em strings. É necessário uma entrada do usuário ou do buffer, converte a string em um int e a armazena em uma variável especificada. Em palavras simples, ele interpreta a entrada de acordo com o formato e armazena o valor resultante em um local específico. Se desempenhar uma função semelhante ao scanf, mas lê a entrada do buffer em vez da entrada padrão.

Veja a seguinte sintaxe completa da função SSCANF fornecida pelo idioma de programação C ++:

A função SSCANF leva um mínimo de dois argumentos de entrada e uma lista de argumentos opcionais. O argumento opcional significa que eles podem ser ignorados, se não forem necessários. Ele lê os dados do buffer "de entrada" no formato "formato" no local especificado pelo "argument_list". O parâmetro ou argumento "entrada" representa a sequência da função que é usada para recuperar os dados. O parâmetro "formato" representa a sequência do formato que especifica como ler a entrada de um buffer.

O formato do especificador de "formato" é o seguinte:

Começa com um % de sinal seguido de * que é um caráter de supressão de tarefas. Os campos de largura e comprimento são opcionais e podem ser ignorados. Se fornecido, a função sscanf consome apenas esse número máximo de caracteres especificados pela "largura". O campo "Comprimento" define o tamanho do argumento receptor. O especificador_name mantém o caractere do especificador (C, S, D, etc.) ao especificar o tipo de conversão. O "argument_list" pode conter pelo menos um argumento adicional. Depende da string "formato".

A função SSCANF retorna os três tipos de resultados - os argumentos recebidos com sucesso atribuídos em caso de uma função bem -sucedida, zero em caso de falha correspondente e EOF no caso de falha de entrada. Agora, vamos explorar alguns exemplos úteis para aprender o uso da função sscanf de c++.

Exemplo 1:

Este é um exemplo muito simples e básico da função sscanf. Uma string é atribuída a uma variável que é passada para a função sscanf. O "int a" é definido para manter o resultado da função sscanf. Veja o seguinte código dado e entenda cada linha de código.

Depois de incluir o arquivo de cabeçalho iostream, o método principal () é iniciado. A sequência “s = 104785” é inicializada e passada para a função sscanf sscanf (s, “%d”, & a). O %D representa o formato de conversão. E "A" é fornecido para manter o resultado.

#incluir
usando namespace std;
int main ()

const char* s = "104785";
int a;
sscanf (s, "%d", & a);
cout << "\nThe converted value of "<retornar 0;

A saída pode ser vista aqui. A sequência "104785" é convertida no número decimal "104785".

Exemplo 2:

Neste exemplo, lemos o flutuador e o bóia dupla usando a mesma função sscanf. Uma string é atribuída a uma variável que é passada para a função SSCANF para conversão de formato. Consulte o código a seguir para entender a função do SSCANF com números de flutuação e flutuação dupla.

Observe que no exemplo anterior, %d é usado como um "especificador de formato". Neste exemplo, %f e %lf são usados. O %F é usado para converter a entrada em um número de flutuação e %lf é usado para converter o número em um número de flutuação duplo.

#incluir
#incluir
usando namespace std;
int main ()

const char* s = "104785.54 ";
flutuar a;
sscanf (s, "%f", & a);
printf ("\ nO valor de flutuação é: %f", a);
duplo b;
sscanf (s, "%lf", & b);
printf ("\ nO valor duplo flutuante é: %f", b);
retornar 0;

Verifique a saída fornecida no seguinte:

Observe que a saída após o lugar decimal é diferente para flutuar e para o duplo flutuador. Isso ocorre porque o flutuador fornece o resultado aproximado mais próximo e é conveniente, rápido e preciso. Enquanto o bóia duplo fornece o resultado calculado exato, pois é tudo sobre confiabilidade e precisão. No entanto, é um pouco mais lento do que flutuar.

Exemplo 3:

Vamos brincar com alguns dados da matriz. Neste exemplo, a entrada é fornecida na forma de uma matriz e é convertida em strings simples. O especificador de formato %s é usado para converter a entrada em uma string. Então, usamos o %S como especificador de formato aqui. Duas matrizes vazias são definidas para manter a saída - FN [10] e LN [10]. A seguir é o código.

Aqui, um nome que consiste em primeiro nome e sobrenome é atribuído a uma matriz buf [] e é passado para a função sscanf, convertendo cada item da matriz em uma string. Ao executar o programa de código, você notará cada item da matriz separadamente. Como existem apenas dois campos de saída definidos (FN e LN), os dois itens de matriz são mostrados pelo programa. A matriz fn [10] detém o primeiro nome "Daniyal". E a matriz LN [10] detém o sobrenome "Privater".

#incluir
int main ()

CHAR FN [10], LN [10];
char buf [] = "Daniyal Privater";
sscanf (buf, " %s %s", fn, ln);
printf ("O primeiro nome é: %s \ nthe sobrenome é: %s \ n", fn, ln);
retornar 0;

A saída deste exemplo é mostrada no seguinte:

Como você pode ver, o valor da matriz "Daniyal Privater" é convertido em duas cordas - "Daniyal" e "Privater" - pelo especificador de formato %s.

Conclusão

Este tutorial é sobre a função sscanf. Aqui, aprendemos a usar a função sscanf com eficiência para converter os dados. A função sscanf pega a entrada do buffer e a converte no tipo de saída especificado definido pelo especificador "formato". São necessários três ou mais três argumentos, dependendo do especificador de "formato". O valor de entrada é o primeiro parâmetro e o especificador de formato é o segundo. Instrui a função do tipo de conversão. O terceiro parâmetro é opcional. Pode ser um argumento ou uma lista de vários argumentos, dependendo do especificador de "formato". Ele retorna os três tipos de resultados - os argumentos de recebimento, zero ou EOF (final do arquivo). O SSCANF é uma função muito simples e fácil do C ++ que é usado para conversões.