funkcja Snprintf w C

funkcja Snprintf w C
W funkcji snprintf () chcemy nauczyć się sformatować dane. Formatowanie danych jest niezbędne, gdy piszemy jakiś status procesu lub dowolnego modułu do pliku, a inny moduł może uzyskać do tego dostęp. W tym celu chcemy udostępnić te dane między modułami. W takim przypadku chcemy sformatować nasze dane, aby inne moduły mogły je zrozumieć w ten sam sposób.

Prototyp funkcji snprintf ()

Funkcja snprintf () jest predefiniowanym typem danych. Jego definicja jest zapisana w standardowym pliku nagłówka w pliku nagłówka o nazwie C.

Charakterystyka funkcji snprintf ()

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

Tutaj używamy kilku parametrów, takich jak funkcja tych parametrów:

  • *ST to bufor, który może zawierać ciąg.
  • Max_Size: Największa liczba znaków, które może zawierać bufor.
  • Format zawierający ciąg i inne specyfikacje, takie jak funkcja printf ().
  • funkcja snprintf () zwraca wartość całkowitą, a jej zadaniem jest zliczenie liczby znaków w buforze.

Przykład programowania 1

Tutaj zobaczymy wdrożenie funkcji Snprintf ():

#włączać
#włączać
int main ()

Char Buff_max [15]; // deklarowanie ciągu
int x = 15;
podwójne y = 26.5;
Snprintf (Buff_max, 14, „Zbadaj test przepełnienia, wartości x = %d i y = %lf”, x, y); // zastosowania funkcji snprintf ()
printf („ %s \ n”, buff_max); // Wydrukuj wartość łańcucha
powrót 0;

Wyjście

Wyjaśnienie

W tym przykładzie programowania użyjemy funkcji Snprintf () do sformatowania ciągu. Tutaj deklarujemy ciąg o nazwie „Buff_max”, który zawiera maksymalnie 15 znaków, z wyjątkiem deklarowania typu liczb całkowitych Zmienna x i typ podwójny Zmienna y.

Teraz, jeśli użyjemy funkcji Snprintf (), musimy przekazać niektóre argumenty w jej nawiasie. Argumenty są pierwszą ze wszystkich strun. Musimy wspomnieć o rozmiarze, jaki może gromadzić bufor; Trzeci parametr to sformatowany ciąg, a następnie zmienna.

Zaletą korzystania z funkcji Snprintf () jest to, że można wydrukować tylko 14 znaków, a reszta znaków jest ignorowana. Program będzie bezpieczny, a program się nie rozbija.

Przykład programowania 2

W tym przykładzie programowania zobaczymy inny przykład funkcji Snprintf ():

#włączać
#włączać
#definicja Max_Buff 1024
#definicja size_name (15)
STRUKTYNEK TYPEDEF

nazwa char [size_name]; // deklarowanie ciągu
niepodpisany int rollno;
podwójne oceny;
STUDENT ; // Tworzenie typu danych zdefiniowanych przez użytkownika
int main (intargc, char *argv [])

Char Buffer [max_buff] = 0;
Student S1 = .name = "avishek" , .Rollno = 6 , .Znaki = 77.17;
Snprintf (bufor, rozmiar (bufor), „ %s %d %lf”, s1.Nazwa, s1.Rollno, S1.znaki ) ; // zastosowania funkcji snprintf ()
printf („bufor = %s \ n”, bufor);
powrót 0;

Wyjście

Wyjaśnienie

W tym przykładzie programowania zdefiniujemy nazwę struktury STUDENT. Członkowie danych STUDENT to nazwa, nr rol i znaki. Wewnątrz funkcji main (). Ogłaszamy zmienną S1, która jest typem danych studenckich. Jeśli chcemy wydrukować wartość każdego odstraszania zmiennej S1, użyjemy funkcji Snprintf (). Parametry snprintf to bufor, rozmiar bufora, format ciągu i wszystkie elementy danych, które należy sformatować. Jeśli wydrukujemy bufor, wyjście zostanie wyświetlone do monitora jako sformatowane wyjście.

Przykład programowania 3

Weźmy kolejny ważny przykład funkcji Snprintf () i jej działania.

#włączać
#włączać
#włączać
#definicja size_Buffer 1024
#definicja size_name (20)
#definicja formatu_string ”(%s,%d,%0.2LF), ”
#definicja size_Buffer 1024
#definicja size_name (20)
#definicja formatu_string ”(%s,%d,%0.2LF), ”
STRUKTYNEK TYPEDEF

nazwa char [size_name];
niepodpisany int rollno;
podwójny procent;
OSOBA ; // definiowanie struktury.
int main (intargc, char *argv [])

Char Buffer [size_Buffer] = 0; // deklarowanie bufora.
Osoba student_data [] = .name = "Raul", .Rollno = 1020, .Procent = 72.30334, \
.name = "Paul", .Rollno = 1021, .Procent = 86.3456 \
; // tworzenie szeregu struktury.
int num_students = sizeof (student_data)/sizeof (person);
int pos = 0;
dla (int i = 0; i
POS += snprintf (bufor +POS, sizeof (bufor), format_string, student_data [i].Imię, student_data [i].Rollno,
student_data [i].odsetek) ;

printf („bufor = [ %s] \ n”, bufor);
powrót 0;

Wyjście

Wyjaśnienie

Tutaj bierzemy szereg struktur i widzimy proces funkcji snprintf (). Definiujemy strukturę o nazwie OSOBA, a wewnątrz funkcji main () zadeklarujemy szereg struktur OSOBA Typ danych i przypisz pewną wartość do tej tablicy. Możemy użyć pętli dla licznika. W końcu wydrukujemy cały bufor ze wszystkimi danymi. Ciągle iterujemy nad tym szeregiem struktur. Teraz zapisujemy wszystkie dane w tym buforze, w zależności od pozycji.

Po raz pierwszy przyszedł pierwszy uczeń i napisze kilka danych na temat tego bufora. Następnie wartość pozycji zmieni się, a bufor zapisuje dla tej pozycji. Tak to działa.

Zaleta korzystania z funkcji snprintf ()

Zaletą korzystania z funkcji Snprintf () jest to, że przypuśćmy, że bufor jest przepełniony przez znak z jego maksymalnego rozmiaru. Program będzie bezpieczny, aby uniknąć awarii. Reszta znaków jest ignorowana przez funkcję Snprintf (), która uruchomi program.

Wniosek

W języku C, podobnie jak funkcja printf (), do formatowania ciągu używana jest inna funkcja o nazwie snprintf (). Aby rozwiązać problem korzystania z funkcji SprintF (), Snprintf () zostaje wniesiony do biblioteki C, aby program był bezpieczniejszy i bardziej elegancki. W tym artykule omówiliśmy funkcję Snprintf () w podanych przykładach.