Função vsnprintf em c

Função vsnprintf em c

Vsnprintf () é um tipo de função que é usado para imprimir a matriz de caracteres usando os dados formatados nas listas de argumentos. Em palavras simples, essa função simplesmente escreve os dados já formatados que são armazenados na lista de variáveis ​​"Type" argumentos em uma string buffer. Esta função compõe uma string se usarmos o mesmo formato que no argumento variável no método printf (). Mas ele usa os elementos já identificados dos argumentos na lista de argumentos variáveis ​​e armazena o resultado na forma da sequência de buffer em C, que é apontada pelo ponteiro da matriz em que a saída imprime nos argumentos. Também leva o tamanho do buffer ou a capacidade da matriz de preencher os números em termos de caracteres.

Procedimento

Este artigo discutirá como aprenderemos o conceito por trás dos métodos vsnprintf (). Ele também mostrará a ordem em que conheceremos sobre a sintaxe para esta função com a implementação da função em diferentes exemplos. Por fim, concluiremos nosso tópico para nos deixar revisar o que aprendemos até agora no artigo sobre o tópico - função vsnprintf ().

Sintaxe

A função vsnprintf é escrita e declarada da mesma forma que escrevemos qualquer outra função. Mas a lista de argumentos para esta função varia um pouco. A função vsnprintf () com sua lista de argumentos é fornecida no seguinte:

$ Int vsnprintf (char * Array, size_length_array, const wchar_t * formato, va_ ​​list args)

Agora discutimos o requisito de cada argumento para esta função um por um. O primeiro argumento é o ponteiro que aponta para o tipo de dados "Char" Array, onde queremos imprimir a saída. O segundo argumento representa os caracteres máximos que a matriz pode armazenar nele. O terceiro argumento representa o ponteiro do formato que aponta para o formato em que queremos imprimir a saída. E o último é o "Va_list args", que é conhecido por ser um tipo que mantém as informações necessárias sobre os argumentos variáveis ​​das funções. Aqui, ele atua como um ponteiro que aponta para a lista de argumentos.

Tipo de retorno

O tipo de retorno desta função é inteiro. Esta função retorna os caracteres se e somente se o programa tiver sucesso sem contar os caracteres nulos para rescisão. Pode retornar um valor negativo em caso de falha do programa.

Exemplo:

Iniciamos a implementação da função mencionada anteriormente, a função vsnprintf (), com a ajuda deste exemplo. Implementamos este exemplo no Microsoft Visual Studio na linguagem de programação C. A função vsnprintf () é usada para escrever/imprimir a lista de argumentos de variável formatada na matriz ou string buffer. Então, primeiro criamos uma lista de argumentos de variável neste exemplo e depois usamos esta lista de argumentos para imprimir uma matriz "char" de tipo de dados.

Para começar com um exemplo, crie um novo projeto no Visual Studio. Para fazer com que este projeto acesse as bibliotecas fundamentais do C, adicione o projeto ao caminho dos arquivos C adicionando o arquivo de origem “.Extensão C ”com o nome do projeto e salve -o. A próxima e a etapa mais básica ao criar um programa é importar as bibliotecas especiais para o programa, para que você possa acessar as funções padrão necessárias fornecidas por essas bibliotecas posteriormente no programa. Importamos os dois arquivos de cabeçalho a seguir para este programa:

$ # inclua
$ # inclua

O primeiro arquivo de cabeçalho garante que inclua as funções para o printf () e scanf (). O segundo é o arquivo de cabeçalho que importamos especialmente para usar o método vsnprintf () depois de criar a lista de argumentos variável. Depois de incluir os dois arquivos anteriores do cabeçalho do projeto, estamos prontos para implementar a parte do nosso programa que lida com a construção de código para o nosso exemplo. Criamos uma função com o tipo de retorno de número inteiro "int" e nomeamos esta função como "formattedList". Esta função replica todos os parâmetros que já discutimos neste artigo para a função vsnprintf () como os argumentos da função. O primeiro parâmetro que passamos para esta função é o ponteiro para a matriz onde a saída é escrita e depois impressa. Em seguida, damos o tamanho desta matriz e passamos o formato em que imprimimos nossa matriz nesta função.

Primeiro inicializamos o comprimento do buffer para ser "0". Em seguida, criamos ou inicializamos uma lista de argumentos variável para esta função com o tipo "Va_list" e nome "argumentos". Em seguida, iniciamos esta lista Va_ chamando o "va_start ()" e passamos o formato e os argumentos como seus parâmetros. Em seguida, definimos o comprimento do buffer chamando o vsnprintf () e passamos todos os objetos para os ponteiros que definimos nos parâmetros da função "formattedlist". Terminamos a lista de argumentos chamando o va_end () e saímos da função retornando o comprimento.

Agora, declaramos a função principal. Nesta função principal, declaramos uma matriz de "buffer" com o tamanho de "50". Em seguida, criamos a matriz de argumentos do tamanho "50" e o designamos com os personagens "Você fez bem". Em seguida, inicializamos o comprimento nesta função principal novamente e chamamos a função formattedList () e passamos os parâmetros de acordo com os parâmetros que definimos anteriormente para o comprimento enquanto criava a "função formatada". Desta vez, passamos os "argumentos" como um parâmetro para esta função. Em seguida, exibimos esse comprimento e a matriz chamando o método printf (), conforme mostrado no seguinte snippet de código:

# incluir
# incluir
int formattedList (char* buffer, int buffersize, const char* formato,…)

int length = 0; m
argumentos Va_list;
va_start (argumentos, formato);
comprimento = vsnprintf (buffer, buffersize, formato, argumentos);
va_end (argumentos);
comprimento de retorno;

int main ()

buffer de char [50];
argumentos de char [50] = "Você se saiu bem";
int length = formattedList (buffer, 50, "%s", argumentos);
printf ("Array: %s \ n", buffer);
printf ("números na matriz: %d \ n", comprimento);
retornar 0;


Após a execução do programa mencionado anteriormente, ele primeiro compôs uma string formatada e imprimiu esta string formatada na forma do buffer de string ou matriz de caracteres.

Conclusão

Este artigo nos guia sobre como podemos usar o conceito da função vsnprinft () para imprimir o caractere de dados do tipo de dados “char” matriz da lista de argumentos que já estão formatados. Fizemos um exemplo sobre essa função para esclarecer os pensamentos e ter uma experiência prática sobre este tópico.