Funkcja Strdup w języku C

Funkcja Strdup w języku C
Zapamiętywanie i opanowanie funkcji, które zajmują się strunami, jest bardzo ważne, ponieważ zawsze używamy ich w jakiejś części programu, który opracowujemy.

Strings są ważną częścią programowania, ponieważ służą do wysyłania wiadomości do użytkownika, wyświetlania wyników, odczytu plików lub określania ich ścieżki, między innymi. Są to również metoda wejściowa i wyjściowa, która ułatwia interakcję między użytkownikiem a programem.

W tym artykule z podpowiedzi Linux dowiesz się, jak używać funkcji strdup () do powielania ciągów. Zobaczymy składnię i teoretyczny opis wywołania metody, jej argumenty wejściowe i wyjściowe oraz akceptowany typ danych w każdym przypadku.

Następnie stosujemy to, czego nauczyliśmy się w praktycznych przykładach przy użyciu fragmentów kodu i obrazów, aby pokazać, jak używać funkcji strdup () do powielania ciągów.

Składnia funkcji strdup () w języku C

char *strdup (const char *str);

Opis funkcji strdup () w języku C

Funkcja strdup () duplikuje ciąg. Ta funkcja powiela ciąg, który jest wskazany przez wskaźnik STR, który jest przekazywany w argumencie wejściowym, i w rezultacie zwraca wskaźnik do nowego ciągu.

Strdup () należy do rodziny funkcji strxxdup (), z których wszystkie mają na celu zduplikowanie ciągów, ale każdy z nich ma inny tryb wywołania i funkcjonalność, aby zaspokoić szczególne potrzeby programatora.

Podobnie jak wszystkie funkcje przetwarzania ciągów, strdup () jest zdefiniowany w „String.H ”nagłówek. Aby go użyć, musisz podać go do kodu w następujący sposób:

#włączać

Jak zduplikować ciąg za pomocą funkcji strdup () w języku C

W tym przykładzie używamy funkcji strdup () do powielania ciągu. Następnie używamy funkcji printf () do wyświetlania wskaźników ciągów „oryginalnych” i „duplikat” w konsoli poleceń.

Aby to zrobić, dołączamy „stdio.h ”i„ String.H ”nagłówki w naszym kodzie i zdefiniuj dwa wskaźniki strun w funkcji Main (). Pierwszy nazywa się „oryginał”, który zawiera „Przykład funkcji strdup ()" wyrażenie. Drugi wskaźnik nazywa się „duplikat”, który zawiera lokalizację, w której funkcja strdup () przechowuje kopię oryginalnego ciągu.

Po zdefiniowaniu przez program, którego używa program, wywołujemy funkcję strdup () i przekazujemy wskaźnik do oryginalnego ciągu jako argument wejściowy i wskaźnik do zduplikowanego ciągu jako argument wyjściowy. Następnie używamy funkcji print () do wyświetlania wskazówek ciągów „oryginał” i „duplikat” na konsoli poleceń. Oto kod tego przykładu:

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

char* original = "przykład funkcji strdup ()";
char* duplikat;
duplikat = strdup (oryginał);
printf („Original:%s \ n”, oryginał);
printf („duplikat:%s \ n”, duplikat);

Jak widzimy na poniższym rysunku, strdup () powiela oryginalny ciąg, dosłownie powielając jego zawartość.

Różnice między funkcjami strdup () i strndup ()

Rodzina strxxdupx () składa się z następujących funkcji:

char *strdup (const char *s);
char *strndup (const char *s, size_t n);
char *strdupa (const char *s);
char *strndupa (const char *s, size_t n);

Wszystkie funkcje w tej rodzinie są zaprojektowane w celu powielenia strun, ale każdy z nich działa w inny sposób.

Jak widzieliśmy, funkcja strdup () całkowicie powiela ciąg, który jest wysyłany w jego argumencie wejściowym i zwraca dokładną kopię w argumencie wyjściowym.

Funkcja strndup () powiela ciąg jego argumentu wejściowego. Może to zrobić całkowicie lub częściowo.

W przeciwieństwie do strdup () funkcja strndup () przyjmuje dwa argumenty wejściowe. Pierwszym argumentem jest „str”, który jest wskaźnikiem do sznurka, który ma zostać powielany. Drugim argumentem jest „N”, która jest zmienną typu size_t, która określa liczbę znaków, które kopiuje.

W poniższym przykładzie widzimy użycie funkcji strndup (), w której powielane jest tylko 8 znaków oryginalnego ciągu.

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

char* original = "przykład funkcji strdup ()";
char* duplikat;
size_t n = 8;
duplikat = strndup (oryginał, n);
printf („Original:%s \ n”, oryginał);
printf („duplikat:%s \ n”, duplikat);

Jak widać na poniższym rysunku, funkcja strndup () powiela liczbę znaków „n” z oryginalnego ciągu.

Błędy, które mogą być generowane przez funkcję strdup ()

Błąd, który może wygenerować ta funkcja, polega na tym, że „system nie ma wystarczającej pamięci, aby uruchomić proces”, co jest mało prawdopodobne w obecnych systemach.

Ten błąd jest zdefiniowany w „Errno.H ”nagłówek i jego kod można zapytać za pomocą zmiennej globalnej Errno. Jego definicja jest enomem.

Wniosek

W tym artykule z podpowiedzi Linuksa wyjaśniliśmy, jak użyć funkcji strdup (), która należy do rodziny funkcji przetwarzania ciągów, która jest zdefiniowana w ciągu.H Nagłówek.

Przyjrzeliśmy się składni tej funkcji i przedstawiliśmy teoretyczne wyjaśnienie jej użycia, jego argumentów wejściowych i wyjściowych.

Aby pomóc Ci lepiej zrozumieć, jak to działa, stworzyliśmy praktyczny przykład z kodem i obrazami, w których można zobaczyć, w jaki sposób tworzone są wskazówki i ciągnie, które są używane przez tę funkcję i jak nazywana jest funkcja.

Pokazaliśmy również, jak korzystać z funkcji strndup (), innej funkcji z rodziny strxxdupx (), dzięki.