Funkcja VSNPRINTF w C

Funkcja VSNPRINTF w C

Vsnprintf () to rodzaj funkcji używanej do drukowania tablicy znaków za pomocą sformatowanych danych na liście argumentów. Krótko mówiąc, ta funkcja po prostu zapisuje już sformatowane dane przechowywane na liście zmiennej „Wpisz” argumenty w ciągu bufora. Ta funkcja komponuje ciąg, jeśli używamy tego samego formatu jak w argumencie zmiennym w metodzie printf (). Ale używa już zidentyfikowanych elementów z argumentów na liście argumentów zmiennych i przechowuje wynik w formie bufora w C w C, który jest wskazany przez wskaźnik tablicy, w której wyjście drukuje w argumentach. Zajmuje również rozmiar bufora lub pojemność tablicy do wypełnienia liczb pod względem znaków.

Procedura

W tym artykule omówimy, w jaki sposób poznamy koncepcję metod VSNPRINTF (). Pokaże również kolejność, w jakiej dowiemy się o składni tej funkcji z implementacją funkcji na różnych przykładach. Wreszcie, zakończymy nasz temat, abyśmy pozwolili nam zrewidować to, czego nauczyliśmy się do tej pory w artykule na temat tego tematu - funkcja vsnprintf ().

Składnia

Funkcja VSNPRINTF jest zapisana i zadeklarowana w tym samym, co piszemy dowolną inną funkcję. Ale lista argumentów dla tej funkcji nieco się różni. Funkcja VSNPRINTF () z listą argumentów podano w następujący sposób:

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

Teraz omawiamy wymóg każdego argumentu dla tej funkcji jeden po drugim. Pierwszym argumentem jest wskaźnik wskazujący tablicę typu danych „char”, w której chcemy wydrukować wyjście. Drugi argument reprezentuje maksymalne znaki, które tablica może w nim przechowywać. Trzeci argument reprezentuje wskaźnik formatu, który wskazuje format, w którym chcemy wydrukować wyjście. A ostatnim to „VA_LIST Args”, o którym wiadomo, że jest typem, który zawiera niezbędne informacje o zmiennych argumentach funkcji. Tutaj działa jako wskaźnik, który wskazuje na listę argumentów.

Typ powrotu

Typem zwrotu tej funkcji to liczby całkowite. Ta funkcja zwraca znaki, jeśli i tylko wtedy, gdy program odniesie sukces bez liczenia znaków zerowych do zakończenia. Może zwrócić wartość ujemną w przypadku awarii programu.

Przykład:

Zainicjujemy wdrożenie funkcji wcześniej wspomnianej, funkcji vsnprintf (), z pomocą tego przykładu. Wdrażamy ten przykład w Microsoft Visual Studio w języku programowania C. Funkcja VSNPRINTF () służy do zapisu/drukowania listy argumentów zmiennej sformatowanej do sznurka tablicy lub bufora. W tym przykładzie najpierw tworzymy listę argumentów zmiennych, a następnie używamy tej listy argumentów, aby wydrukować tablicę typu danych „char”.

Na początek utwórz nowy projekt w Visual Studio. Aby ten projekt uzyskał dostęp do podstawowych bibliotek C, dodaj projekt do ścieżki plików C, dodając plik źródłowy „.C ”rozszerzenie z nazwą projektu i zapisz go. Następnym i najbardziej podstawowym krokiem podczas tworzenia programu jest import specjalnych bibliotek do programu, abyś mógł uzyskać dostęp do wymaganych funkcji domyślnych dostarczonych przez te biblioteki w dalszej części programu. Importujemy następujące dwa pliki nagłówka dla tego programu:

$ # obejmują
$ # obejmują

Pierwszy plik nagłówka zapewnia funkcje dla printf () i scanf (). Drugi to plik nagłówka, który specjalnie zaimportowaliśmy, aby użyć metody vsnprintf () po utworzeniu listy argumentów zmiennych. Po uwzględnieniu dwóch poprzednich plików nagłówkowych w projekcie jesteśmy gotowi wdrożyć część naszego programu, która dotyczy budowy kodu dla naszego przykładu. Tworzymy funkcję z typem powrotu Integer „INT” i nazywamy tę funkcję jako „sformatowana lista”. Ta funkcja replikuje wszystkie parametry, które już omówiliśmy w tym artykule dla funkcji vsnprintf () jako argumenty funkcji. Pierwszym parametrem, który przekazujemy do tej funkcji, jest wskaźnik do tablicy, w której wyjście jest zapisywane, a następnie wydrukowane. Następnie podajemy rozmiar tej tablicy i przekazujemy format, w którym drukujemy naszą tablicę w tej funkcji.

Najpierw zainicjujemy długość bufora na „0”. Następnie tworzymy lub inicjowujemy listę argumentów zmiennych dla tej funkcji z typem „VA_LIST” i nazwa „Argumenty”. Następnie rozpoczynamy tę listę VA_, wywołując „va_start ()” i przekazujemy jej format i argumenty jako jego parametry. Następnie definiujemy długość bufora, wywołując vsnprintf () i przekazujemy wszystkie obiekty dla wskaźników, które zdefiniowaliśmy w parametrach funkcji „FormatedList”. Kończymy listę argumentów, wywołując VA_END () i wychodzimy z funkcji, zwracając długość.

Teraz deklarujemy główną funkcję. W tej głównej funkcji deklarujemy tablicę „bufora” o wielkości „50”. Następnie tworzymy tablicę argumentów o rozmiarze „50” i przypisujemy ją postaciami „Dobrze się spisałeś”. Następnie ponownie zainicjujemy długość w tej głównej funkcji i wywołujemy funkcję FormatedList () i przekazujemy jej parametry zgodnie z parametrami, które zdefiniowaliśmy wcześniej dla długości podczas tworzenia „funkcji FormatedList”. Tym razem przekazujemy „argumenty” jako parametr tej funkcji. Następnie wyświetlamy tę długość i tablicę, wywołując metodę printf (), jak pokazano w następującym fragmencie kodu:

# włączać
# włączać
int FormatedList (Char* Bufor, int bufersize, const char* format,…)

int długość = 0; m
argumenty va_list;
va_start (argumenty, format);
długość = vsnprintf (bufor, bufersize, format, argumenty);
va_end (argumenty);
długość powrotu;

int main ()

Char Buffer [50];
Char Arguments [50] = „Zrobiłeś dobrze”;
int długość = FormatedList (bufor, 50, „%s”, argumenty);
printf („tablica: %s \ n”, bufor);
printf („Liczby w tablicy: %d \ n”, długość);
powrót 0;


Po wykonaniu wcześniej wspomnianego programu, najpierw skomponował sformatowany ciąg i wydrukował ten sformatowany ciąg w postaci bufora lub tablicy znaków.

Wniosek

W tym artykule kieruje nas, w jaki sposób możemy wykorzystać koncepcję funkcji VSNPRINFT () do wydrukowania tablicy „char” typu danych z listy argumentów, które są już sformatowane. Zrobiliśmy przykład tej funkcji, aby wyjaśnić myśli i mieć praktyczne doświadczenie na ten temat.