snprintf -funksjon i c

snprintf -funksjon i c
I SNPrintf () -funksjonen vil vi lære å formatere dataene. Dataformateringen er viktig når vi skriver en viss status for prosessen eller en hvilken som helst modul til en fil, og en annen modul kan få tilgang til den. For det formålet ønsker vi å dele disse dataene mellom moduler. I dette tilfellet ønsker vi å formatere dataene våre slik at andre moduler kan forstå dem på samme måte.

snPrintf () funksjonsprototype

SNPrintf () -funksjonen er en forhåndsdefinert datatype. Definisjonen er skrevet i en standard overskriftsfil i C som heter overskriftsfil.

Kjennetegn på SNPrintf () -funksjon

int snprintf (char *st, max_size, const char *format, .. .);

Her bruker vi flere parametere, for eksempel funksjonen til disse parametrene:

  • *ST er en buffer som kan inneholde strengen.
  • MAX_SIZE: Høyeste antall tegn som en buffer kan inneholde.
  • Format som inneholder en streng og andre spesifikasjoner som printf () -funksjon.
  • SnPrintf () -funksjonen returnerer en heltallverdi, og jobben er å telle antall tegn inne i bufferen.

Programmering Eksempel 1

Her vil vi se implementeringen av SNPrintf () -funksjonen:

#inkludere
#inkludere
int main ()

char buff_max [15]; // erklære en streng
int x = 15;
Dobbelt y = 26.5;
snprintf (buff_max, 14, "Undersøk overløpstesten, verdiene på x = %d og y = %lf", x, y); // bruk av snPrintf () -funksjonen
printf (" %s \ n", buff_max); // Skriv ut verdien på strengen
retur 0;

Produksjon

Forklaring

I dette programmeringseksemplet vil vi bruke SNPrintf () -funksjonen for å formatere en streng. Her erklærer vi en streng som heter “Buff_max”, som maksimalt har 15 tegn, bortsett fra at vi erklærer en heltallstype variabel x og dobbel type variabel y.

Nå, hvis vi bruker SNPrintf () -funksjonen, må vi passere noen argumenter i parentesen. Argumentene er de første av alle strengene. Vi må nevne størrelsen bufferen kan akkumulere; Den tredje parameteren er den formaterte strengen, og deretter variabelen.

Fordelen med å bruke SnPrintf () -funksjonen er at bare 14 tegn kan skrives ut, og resten av karakterene blir ignorert. Programmet vil være trygt, og programmet krasjer ikke.

Programmering Eksempel 2

I dette programmeringseksemplet vil vi se et annet eksempel på SNPrintf () -funksjon:

#inkludere
#inkludere
#Define Max_Buff 1024
#Define Size_Name (15)
typedef struct

char name [size_name]; // erklære en streng
usignert int rollno;
doble merker;
Student; // Opprette brukerdefinert datatype
int main (intargc, char *argv [])

char buffer [max_buff] = 0;
Student S1 = .name = "Avishek" , .Rollno = 6 , .Merker = 77.17;
snPrintf (buffer, størrelse av (buffer), " %s %d %lf", s1.Navn, S1.Rollno, S1.merker); // bruk av snPrintf () -funksjonen
printf ("buffer = %s \ n", buffer);
retur 0;

Produksjon

Forklaring

I dette programmeringseksemplet vil vi definere strukturnavnet STUDENT. Datamedlemmene av STUDENT er navn, rull nei og merker. Inne i hovedfunksjonen (). Vi erklærer en variabel S1 som er studentdatatype. Hvis vi ønsker å skrive ut verdien av hver avskrekking av S1 -variabelen, vil vi bruke SNPrintf () -funksjonen. Parametrene til SNPrintf er buffer, størrelsen på bufferen, formatet på strengen og alle datamedlemmene som må formateres. Hvis vi skriver ut bufferen, vises utgangen til skjermen som formatert utgang.

Programmeringseksempel 3

La oss ta et annet viktig eksempel på SNPrintf () -funksjonen og hvordan den fungerer.

#inkludere
#inkludere
#inkludere
#Define Size_Buffer 1024
#Define Size_Name (20)
#define format_string "(%s,%d,%0.2lf), "
#Define Size_Buffer 1024
#Define Size_Name (20)
#define format_string "(%s,%d,%0.2lf), "
typedef struct

char name [size_name];
usignert int rollno;
dobbel prosentandel;
Person; // Definere en struktur.
int main (intargc, char *argv [])

char buffer [size_buffer] = 0; // erklære en buffer.
Person student_data [] = .Navn = "Raul", .Rollno = 1020, .Prosent = 72.30334, \
.Navn = "Paul", .Rollno = 1021, .Prosent = 86.3456 \
; // lage en rekke strukturer.
int num_students = sizeof (student_data)/sizeof (person);
int pos = 0;
for (int i = 0; i
POS += snPrintf (buffer +pos, størrelse av (buffer), format_string, student_data [i].Navn, student_data [i].Rollno,
student_data [i].prosent);

printf ("buffer = [ %s] \ n", buffer);
retur 0;

Produksjon

Forklaring

Her tar vi en rekke strukturer og ser SNPrintf () -funksjonsprosessen. Vi definerer en struktur som heter PERSON, og inne i hoved- () -funksjonen, vil vi erklære en rekke strukturer av PERSON datatype og tilordne en viss verdi til denne matrisen. Vi kan bruke en sløyfe til disken. Til slutt vil vi skrive ut hele bufferen med alle dataene. Vi itererer kontinuerlig over dette utvalget av strukturer. Nå lagrer vi alle dataene i denne bufferen, avhengig av stillingen.

For første gang kom den første studenten, og den vil skrive noen data om denne bufferen. Deretter vil posisjonens verdi endres, og bufferen vil skrive for den posisjonen. Slik fungerer det.

Fordelen med å bruke snprintf () -funksjon

Fordelen med å bruke SNPrintf () -funksjonen er at antar at bufferen er overfylt av tegnet fra sin maksimale størrelse. Programmet vil være sikkert for å unngå et krasj. Resten av karakterene blir ignorert av SNPrintf () -funksjonen, som kjører programmet.

Konklusjon

På C -språket, som ligner på printf () -funksjonen, brukes en annen funksjon som heter snprintf () for å formatere strengen. For å løse problemet med å bruke Sprintf () -funksjonen, blir Snprintf () brakt til C -biblioteket for å gjøre programmet tryggere og mer elegant. I denne artikkelen diskuterte vi SNPrintf () -funksjonen i eksemplene som er gitt.