Funzione vsnprintf in c

Funzione vsnprintf in c

Vsnprintf () è un tipo di funzione che viene utilizzato per stampare l'array di caratteri utilizzando i dati formattati negli elenchi degli argomenti. In parole semplici, questa funzione scrive semplicemente i dati già formati che vengono archiviati nell'elenco variabile "digitare" argomenti in una stringa buffer. Questa funzione compone una stringa se utilizziamo lo stesso formato dell'argomento variabile sul metodo printf (). Ma utilizza gli elementi già identificati dagli argomenti nell'elenco degli argomenti variabili e memorizza il risultato nella forma della stringa del buffer in C che è indicato dal puntatore dell'array in cui l'uscita stampano negli argomenti. Prende anche le dimensioni del buffer o la capacità dell'array di riempire i numeri in termini di caratteri.

Procedura

Questo articolo discuterà di come impareremo il concetto dietro i metodi vsnprintf (). Mostrerà anche l'ordine in cui conosceremo la sintassi per questa funzione con l'implementazione della funzione su diversi esempi. Infine, concluderemo il nostro argomento per consentirci di rivedere ciò che abbiamo imparato finora nell'articolo sull'argomento - vsnprintf ().

Sintassi

La funzione vsnprintf è scritta e dichiarata nello stesso modo in cui scriviamo qualsiasi altra funzione. Ma l'elenco degli argomenti per questa funzione varia un po '. La funzione vsnprintf () con il suo elenco di argomenti è fornita nel seguente:

$ Int vsnprintf (array char *, size_length_array, const wchar_t * formato, VA_ elenco args)

Discutiamo ora il requisito di ogni argomento per questa funzione uno per uno. Il primo argomento è il puntatore che indica l'array "char" del tipo di dati in cui vogliamo stampare l'output. Il secondo argomento rappresenta i caratteri massimi che l'array può archiviare. Il terzo argomento rappresenta il puntatore di formato che indica il formato in cui vogliamo stampare l'output. E l'ultimo è "Va_list Args" che è noto per essere un tipo che contiene le informazioni necessarie sugli argomenti variabili delle funzioni. Qui, funge da puntatore che indica l'elenco degli argomenti.

Tipo di ritorno

Il tipo di ritorno di questa funzione è integri. Questa funzione restituisce i caratteri se e solo se il programma ha successo senza contare i caratteri null per la terminazione. Potrebbe restituire un valore negativo in caso di fallimento del programma.

Esempio:

Iniziamo l'implementazione della funzione precedentemente menzionata, la funzione vsnprintf (), con l'aiuto di questo esempio. Implettiamo questo esempio in Microsoft Visual Studio nel linguaggio di programmazione C. La funzione vsnprintf () viene utilizzata per scrivere/stampare l'elenco degli argomenti variabili formattati nell'array o nella stringa buffer. Quindi, in questo esempio creiamo un elenco di argomenti variabili e quindi utilizziamo questo elenco di argomenti per stampare un array "char" tipo di dati.

Per iniziare con un esempio, crea un nuovo progetto in Visual Studio. Per far accedere a questo progetto nelle librerie fondamentali della C, aggiungere il progetto al percorso dei file C aggiungendo il file di origine ".C ”estensione con il nome del progetto e salvarlo. Il passaggio successivo e il più semplice durante la creazione di un programma è importare le biblioteche speciali nel programma in modo da poter accedere alle funzioni predefinite richieste fornite da queste librerie più avanti nel programma. Importiamo i seguenti due file di intestazione per questo programma:

$ # include
$ # include

Il primo file di intestazione si assicura di includere le funzioni per printf () e scanf (). Il secondo è il file di intestazione che abbiamo importato in particolare per utilizzare il metodo vsnprintf () dopo aver creato l'elenco degli argomenti variabili. Dopo aver incluso i due file di intestazione precedenti nel progetto, siamo pronti ad implementare la parte del nostro programma che si occupa della costruzione del codice per il nostro esempio. Creiamo una funzione con il tipo di ritorno di intero "int" e nominiamo questa funzione per essere "formattata". Questa funzione replica tutti i parametri che abbiamo già discusso in questo articolo per la funzione vsnprintf () come argomenti della funzione. Il primo parametro che passiamo a questa funzione è il puntatore all'array in cui viene scritto l'uscita e quindi stampato. Quindi, diamo le dimensioni di questo array e passiamo il formato in cui stampiamo il nostro array in questa funzione.

Per prima cosa inizializziamo la lunghezza del buffer per essere "0". Quindi, creiamo o inizializziamo un elenco di argomenti variabili per questa funzione con il tipo "va_list" e il nome "argomenti". Quindi, iniziamo questo elenco VA_ chiamando "Va_start ()" e passiamo il formato e gli argomenti come parametri. Definiamo quindi la lunghezza per il buffer chiamando vsnprintf () e passiamo tutti gli oggetti per i puntatori che abbiamo definito nei parametri della funzione "formattatura". Terminiamo l'elenco degli argomenti chiamando il VA_END () e uscirà dalla funzione restituendo la lunghezza.

Ora dichiariamo la funzione principale. In questa funzione principale, dichiariamo un array di "buffer" con le dimensioni di "50". Quindi, creiamo la matrice di argomentazioni di dimensioni "50" e lo assegniamo con i personaggi "hai fatto bene". Quindi, inizializziamo nuovamente la lunghezza in questa funzione principale e chiamiamo la funzione FormatTetedList () e la passiamo i parametri in base ai parametri che abbiamo definito in precedenza per la lunghezza durante la creazione della "funzione formattata". Questa volta, passiamo gli "argomenti" come parametro a questa funzione. Quindi, visualizziamo questa lunghezza e l'array chiamando il metodo printf () come mostrato nel seguente frammento di codice:

# includere
# includere
int formattedlist (char* buffer, int bufferSize, const char* formato,…)

int lunghezza = 0; m
argomenti va_list;
va_start (argomenti, formato);
lunghezza = vsnprintf (buffer, bufferSize, formato, argomenti);
va_end (argomenti);
Lunghezza di ritorno;

int main ()

Char Buffer [50];
Char Arguments [50] = "Hai fatto bene";
int lunghezza = formattatura (buffer, 50, "%s", argomenti);
printf ("array: %s \ n", buffer);
printf ("numeri in array: %d \ n", lunghezza);
restituzione 0;


Dopo l'esecuzione del programma precedentemente menzionato, ha prima composto una stringa formattata e ha stampato questa stringa formattata nella forma del buffer della stringa o dell'array di caratteri.

Conclusione

Questo articolo ci guida su come possiamo usare il concetto della funzione vsnprinft () per stampare l'array "char" del carattere del tipo di dati dall'elenco degli argomenti già formattati. Abbiamo fatto un esempio su questa funzione per eliminare i pensieri e avere un'esperienza pratica su questo argomento.