Vsnprintf -funksjon i C

Vsnprintf -funksjon i C

Vsnprintf () er en type funksjon som brukes til å skrive ut karakteroppstillingen ved å bruke de formaterte dataene i argumentlistene. Med enkle ord skriver denne funksjonen ganske enkelt de allerede formaterte dataene som er lagret i variabellisten "Type" -argumenter i en bufferstreng. Denne funksjonen komponerer en streng hvis vi bruker samme format som i det variable argumentet på printf () -metoden. Men den bruker de allerede identifiserte elementene fra argumentene i den variable argumentlisten og lagrer resultatet i form av bufferstrengen i C som er pekt med pekeren til matrisen der utgangen skriver ut i argumentene. Det tar også størrelsen på bufferen eller kapasiteten til matrisen til å fylle tallene når det gjelder tegn.

Fremgangsmåte

Denne artikkelen vil diskutere hvordan vi vil lære konseptet bak VSNPrintf () -metodene. Det vil også vise rekkefølgen vi vil bli kjent med syntaks for denne funksjonen med implementering av funksjonen på forskjellige eksempler. Til slutt vil vi konkludere med emnet vårt for å la oss revidere det vi lærte så langt i artikkelen om emnet - VSNPrintf () -funksjonen.

Syntaks

VSNPrintf -funksjonen er skrevet og erklært i samme som vi skriver noen annen funksjon. Men argumentlisten for denne funksjonen varierer litt. VSNPrintf () -funksjonen med sin argumentliste er gitt i følgende:

$ Int vsnprintf (char * array, size_length_array, const wchar_t * format, va_ ​​liste args)

Vi diskuterer nå kravet til hvert argument for denne funksjonen en etter en. Det første argumentet er pekeren som peker på datatypen "char" -arrayen der vi ønsker å skrive ut utdataene. Det andre argumentet representerer de maksimale tegnene som matrisen kan lagre i den. Det tredje argumentet representerer formatpekeren som peker på formatet vi ønsker å skrive ut utgangen. Og den siste er "VA_LIST Args" som er kjent for å være en type som har nødvendig informasjon om funksjonenes variable argumenter. Her fungerer det som en peker som peker på argumentlisten.

Returtype

Returtypen for denne funksjonen er heltall. Denne funksjonen returnerer tegnene hvis og bare hvis programmet blir vellykket uten å telle nullkarakterene for oppsigelse. Det kan gi en negativ verdi i tilfelle svikt i programmet.

Eksempel:

Vi starter implementeringen av den tidligere nevnte funksjonen, VSNPrintf () -funksjonen, ved hjelp av dette eksemplet. Vi implementerer dette eksemplet i Microsoft Visual Studio på programmeringsspråket C. VSNPrintf () -funksjonen brukes til å skrive/skrive ut den formaterte variable argumentlisten til matrisen eller bufferstrengen. Så vi oppretter først en variabel argumentliste i dette eksemplet og bruker deretter denne argumentlisten til å skrive ut en datatype “Char” -array.

For å starte med et eksempel, lage et nytt prosjekt i Visual Studio. For å få dette prosjektet til å få tilgang til de grunnleggende bibliotekene til C, legg prosjektet til banen til C -filer ved å legge til kildefilen “.c ”utvidelse med navnet på prosjektet og lagre det. Det neste og mest grunnleggende trinnet mens du oppretter et program er å importere de spesielle bibliotekene til programmet, slik at du kan få tilgang til de nødvendige standardfunksjonene som leveres av disse bibliotekene senere i programmet. Vi importerer følgende to overskriftsfiler for dette programmet:

$ # inkluderer
$ # inkluderer

Den første overskriftsfilen sørger for å inkludere funksjonene for Printf () og Scanf (). Den andre er overskriftsfilen som vi spesielt importerte for å bruke VSNPrintf () -metoden etter å ha opprettet variabel argumentliste. Etter å ha inkludert de to foregående toppfilene i prosjektet, er vi klare til å implementere den delen av programmet vårt som omhandler bygging av kode for vårt eksempel. Vi oppretter en funksjon med returtypen av heltall “int” og navngir denne funksjonen for å være “formatedlist”. Denne funksjonen repliserer alle parametrene som vi allerede diskuterte i denne artikkelen for VSNPrintf () -funksjonen som funksjonens argumenter. Den første parameteren som vi går over til denne funksjonen er pekeren til matrisen der utgangen er skrevet og deretter skrevet ut. Deretter gir vi størrelsen på denne matrisen og passerer formatet vi skriver ut vårt utvalg i denne funksjonen.

Vi initialiserer først lengden på bufferen til å være "0". Deretter oppretter eller initialiserer vi en variabel argumentliste for denne funksjonen med typen "va_list" og navngir "argumenter". Deretter starter vi denne VA_ -listen ved å ringe “VA_Start ()” og gi den formatet og argumentene som dens parametere. Vi definerer deretter lengden for bufferen ved å ringe vsnprintf () og passere alle objektene for pekerne som vi definerte i parametrene til "formatedlist" -funksjonen. Vi avslutter argumentlisten ved å ringe va_end () og komme ut av funksjonen ved å returnere lengden.

Nå erklærer vi hovedfunksjonen. I denne hovedfunksjonen erklærer vi en "buffer" -matrise med størrelsen på "50". Deretter oppretter vi argumentets utvalg av størrelse “50” og tildeler det med karakterene “Du gjorde det bra”. Deretter initialiserer vi lengden i denne hovedfunksjonen igjen og kaller FORMATEDLIST () -funksjonen og passerer den parametrene i henhold til parametrene som vi definerte tidligere for lengden mens vi opprettet “FormatedList -funksjonen”. Denne gangen passerer vi "argumentene" som en parameter til denne funksjonen. Deretter viser vi denne lengden og matrisen ved å kalle printf () -metoden som vist i følgende kodebit:

# inkluderer
# inkluderer
int formatedlist (char* buffer, int buffersize, const char* format, ...)

int lengde = 0; m
VA_LIST -argumenter;
va_start (argumenter, format);
lengde = vsnprintf (buffer, buffersize, format, argumenter);
va_end (argumenter);
returlengde;

int main ()

char buffer [50];
røye argumenter [50] = "du gjorde det bra";
int lengde = formatedlist (buffer, 50, "%s", argumenter);
printf ("Array: %s \ n", buffer);
printf ("tall i array: %d \ n", lengde);
retur 0;


Etter utførelsen av det tidligere nevnte programmet, komponerte det først en formatert streng og trykket denne formaterte strengen i form av strengbufferen eller karaktergruppen.

Konklusjon

Denne artikkelen guider oss om hvordan vi kan bruke konseptet med VSNPrinft () -funksjonen for å skrive ut datatypekarakteren “Char” -array fra listen over argumenter som allerede er formatert. Vi har gjort et eksempel på denne funksjonen for å fjerne tankene og ha en praktisk opplevelse om dette emnet.