Struny w języku c

Struny w języku c

Sznurki są często używane w języku C. Dzięki nimi program wyświetla użytkownikowi wiadomości lub wyniki, wprowadza informacje do systemu, generuje lub konsultuje się z informacjami w bazach danych, porównuje lub wyszukuje słowa w tekście itp. Są one również używane do funkcji do określenia ścieżek plików, wybierz działające katalogi itp.

W tym artykule z Linuksa dowiesz się wszystkiego o strunach. Wyjaśnimy od zera, czym jest ciąg, jakie elementy składa się i jak się tworzy.

Zobaczymy także specjalną sekcję, która wyjaśnia, czym są postacie specjalne i jaką rolę odgrywają postacie kontrolne w ciągu.

Po wyjaśnieniu teoretycznym zobaczymy kilka praktycznych przykładów z fragmentami kodowymi i obrazami, w których uczymy cię tworzenia strun i korzystanie z podstawowych funkcji, które Język C zapewnia ich zarządzanie.

Struny w języku c

Ciąg to kawałek tekstu, który składa się z alfanumerycznych znaków, symboli i znaków kontrolnych. Kompilator przetwarza wszystko, co jest zamknięte w cytatach jako ciąg i automatycznie umieszcza zerowy znak po ostatnim znaku, który wskazuje koniec.

Następnie spójrzmy na najbardziej znany łańcuch w programowaniu:

"Witaj świecie"

Język C przechowuje sznurki w tablicach elementów typu Char lub niepodpisanego. Rodzaj danych elementów należy określić w deklaracji tablicy, jak pokazano następująco:

Char String_1 [20];
Unsigned Char String_2 [20];

W takim przypadku tablica String_1 ma 20 elementów typu char, a tablica String_2 ma 20 elementów typu bez znaku.

Typ danych elementów tablicy określa zestaw znaków, który zaakceptuje ciąg. Typ danych Char przyjmuje tylko jeden 7-bitowy znak ASCII. Pozostały bit jest używany jako znak i sprawdzenie parytetu, więc tylko znaki między 0H00 a 0H80 z tabeli ASCII mogą być reprezentowane w tym typie danych.

Znaki niepodpisanego typu zwęglenia nie używają bitu znaku, więc ich 8 bitów jest używanych do reprezentowania znaków między 0H00 a 0HFF rozszerzonego kodu ASCII.

Oprócz znaków alfanumerycznych i symboli, ciąg może również zawierać znaki sterujące.

Uciekaj i kontroluj postacie w języku C

Znaki kontrolne mają funkcję wykonywania określonych działań w ciągłym ciągu. Na przykład znak „\ n” przed początkiem ciągu oznacza, że ​​należy ją zapisać w nowej linii.

#włączać
void main ()
printf („\ nhello World”);

Postać ucieczki na końcu łańcucha wskazuje, że ciąg ma zostać napisany, a kursor jest przenoszony do następnego wiersza.

#włączać
void main ()
printf („Hello World \ n”);

Wszystkie sekwencje ucieczki składają się z alfanumerycznej postaci, która jest poprzedzona rozładowaniem odwrotnym.

Następnie widzimy tabelę najczęściej używanych znaków ucieczki w języku C:

\N Nowa linia
\R Zwrot powozu
\A Alarm Beep
\T Tabelacja
\ v Pionowa tabela
\B Backspace
\F Form Feed

Oprócz tych znaków ucieczki, istnieją sekwencje, które wskazują na kompilator, że muszą on zawierać pewne symbole w ciągu. Na przykład, jeśli chcemy dołączyć znak podwójnego cytatu do tekstu, kompilator interpretuje go jako terminator ciągu, a nie jako inny charakter. Z tego powodu niektóre symbole muszą być poprzedzone rozładowaniem odwrotnym, aby kompilator mógł wstawić. W poniższym przykładzie widzimy, co to jest:

\ ” Wstaw podwójne cytaty
\ ' Włóż pojedyncze cytaty
\\ Wstaw wsteczny
\? Włóż znak zapytania

:

Jak utworzyć ciąg w języku C

Jednym ze sposobów deklarowania ciągu jest utworzenie tablicy znaków typu Char lub niepodpisanego char, w następujący sposób:

char str [50];
str = „Hello World”;

W ten sposób kompilator traktuje dane przechowywane w tablicy jako pojedynczy ciąg, przypisując zerowy znak na końcu.

Jak utworzyć stały ciąg w języku C

Aby utworzyć stały ciąg, musisz zadeklarować tablicę znaków typu char lub niepodpisaną char bez określenia jego rozmiaru. Następnie przypisz do niego ciąg, jak pokazano w następujący sposób:

char str [] = "hello świat";

Kompilator automatycznie umieszcza znak zerowy na końcu łańcucha, aby wskazać jego koniec. Z tego typu ciągiem nie można zmienić zawartości.

Jak utworzyć wskaźnik do łańcucha w języku C

Innym sposobem przechowywania ciągu jest ogłoszenie wskaźnika do tablicy, która go przechowuje. Ta metoda dynamicznie przydziela rozmiar tablicy znaków. Oto poprawny sposób deklarowania wskaźnika ciągów:

char *s_ptr;
s_ptr = "Hello World";

Metoda wskaźnika jest najczęściej używana przez funkcje języka C w odniesieniu do ciągu w argumentach wejściowych i wyjściowych.

Funkcje obsługi strun

Podczas programowania ważne jest zapamiętywanie podstawowych funkcji do obsługi ciągów, ponieważ używamy ich w kółko. Jeśli je opanujesz, Twoja praca pójdzie znacznie szybciej.

Wszystkie funkcje obsługi ciągów są zdefiniowane w „String.H ”nagłówek. Aby z nich skorzystać, musisz podać ten plik do kodu w następujący sposób:

#włączać

W poniższej sekcji pokażemy krótko, jak korzystać z podstawowych funkcji obsługi ciągów w języku C.

Jak wyświetlić ciąg w języku C

Najczęstszym sposobem wyświetlania ciągu na ekranie jest użycie funkcji printf () lub puts (), które są zdefiniowane w „stdio.H ”nagłówek. Funkcje te akceptują ciąg lub wskaźnik do ciągu jako argument wejściowy.

Zobaczmy teraz, w jaki sposób można wyświetlić ciąg na ekranie za pomocą funkcji printf ():

#włączać
void main ()
printf („Hello World 1 \ n”);
char str [15] = "\ nhello World 2 \ n";
printf („%s”, str);

Jeśli używasz funkcji printf () i przekazujesz wskaźnik ciąg. Ponieważ w tym przypadku jest to ciąg, ten format jest określony z „%s” jako pierwszym argumentem wejściowym.

Na poniższym rysunku można zobaczyć kompilację i wykonanie tego kodu:

Jak skopiować ciąg w języku C

Istnieje kilka sposobów kopiowania ciągu w języku C. Najczęściej stosowaną metodą jest funkcja strcpy (), która jest zdefiniowana w „ciągu.H ”nagłówek. W poniższym przykładzie przyjrzymy się składniom tej funkcji:

Strcpy (S1, S2);

Funkcja strcpy () kopiuje ciąg „S2” do ciągu „S1” i na końcu wstawia znak zerowy. Ciąg „S2” można określić jawnie lub domyślnie.

Przykład:

Poniższy kod kopiuje wyraźnie określony ciąg „S2” do ciągu „S1” i wyświetla go w konsoli poleceń:

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

char s1 [20] = "";
strcpy (s1, "\ n \ nhello świat \ n \ n");
printf („%s”, s1);

Poniższy obraz pokazuje kompilację i wykonanie tego kodu. W tym przypadku strcpy () kopiuje ciąg z „S2” do „S1”, a następnie drukuje go na ekranie za pomocą funkcji printf ():

Jak połączyć dwa struny w języku C

Funkcją, którą Język C daje w celu połączenia dwóch ciągów, jest strcat (). Spójrzmy na składnię tej funkcji w następujący sposób:

strcat (s1, s2);

Ta funkcja łączy ciąg „S2” w ciąg „S1”. Podobnie jak wszystkie funkcje przetwarzania ciągów, strcat () umieszcza znak zerowy na końcu połączonego ciągu. Zarówno „S1”, jak i „S2” można określić jawnie lub domyślnie.

Przykład:

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

char s1 [20] = "\ n \ nhello";
strcat (s1, „świat \ n \ n”);
printf („%s”, s1);

Poniższy obraz pokazuje kompilację i wykonanie tego kodu. W tym przypadku strcat () łączy ciąg „S2” do ciągu „S1”, a następnie drukuje go na ekranie za pomocą funkcji printf ():

Jak porównać dwa struny w języku C

Funkcją, którą udziela język C w celu porównania ciągów, jest strcmp (). Spójrzmy na składnię tej funkcji w następujący sposób:

int strcmp (s1, s2);

Funkcja strcmp () porównuje ciągi „S1” i „S2”. Jeśli są równe, zwraca wynik równy 0. Jeśli nie są równe, zwraca wynik, który nie jest równy 0.


Przykład:

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

char s1 [50] = „równy”;
char s2 [50] = „równy”;
char s3 [50] = „nie równy”;
//przypadek 1
if (strcmp (s1, s2) == 0)
printf ("\ n \ ns1 i s2 są równe \ n \ n");
w przeciwnym razie
printf ("\ n \ ns1 i s2 nie są równe \ n \ n");
// Przypadek 2
if (strcmp (s1, s3) == 0)
printf ("\ n \ ns1 i s3 są równe \ n \ n");
w przeciwnym razie
printf ("\ n \ ns1 i s3 nie są równe \ n \ n");

Widzimy kompilację i wykonanie tego kodu na poniższym rysunku. W przypadku 1 „S1” i „S2” są takie same, więc Strcmp () zwraca 0. W przypadku 2 „S1” i „S3” nie są równe, więc program wchodzi do „inaczej” instrukcji „If”.

Jak wyciąć sznur na fragmenty

Funkcja strsep () fragmenty ciągu, który jest wskazany przez łańcuch na kawałki, zaczynając od ograniczonego argumentu wejściowego „delimu”. Spójrzmy teraz na składnię tej funkcji:

char *strsep (char ** ogranicz ciąg, const char *ogranicz dewel);

Kiedy Strsep () napotyka ograniczenie, zastępuje go zerowym znakiem, który wyznacza koniec nowego fragmentu i ustawia wskaźnik na string do następnej pozycji. Ta funkcja zwraca wskaźnik do nowego fragmentu na każdym połączeniu lub wskaźnik zerowy, jeśli nie znajdzie więcej ograniczeń.

Przykład:

W tym przykładzie fragmentujemy „Dzisiaj jest świetny dzień do programowania” strnij i użyj miejsca jako ogranicznika, aby ciąg był rozdrobniony słowo przez słowo, które wyprowadzamy do konsoli poleceń za pomocą funkcji printf (). Wezwanie do funkcji strsep () jest powtarzane w ciągu czasu, aż nie znajdzie więcej ograniczeń i zwróci wskaźnik zerowy.

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

char s_in [50] = "Dzisiaj jest świetny dzień do programowania";
char* in_ptr = s_in;
char del [4] = "";
char* o_ptr;
While (O_PTR != Null)
o_ptr = strSep (& in_ptr, del);
printf ("%s \ n \ n", o_ptr);

Poniższy obraz pokazuje kompilację i wykonanie tego kodu. Jak widzimy, strSep () fragmenty słowa słowo według słowa, a funkcja printf () drukuje każde słowo do nowego wiersza konsoli poleceń:

Wniosek

W tym artykule z podpowiedzi Linuksa wyjaśniliśmy, z czego składa się ciąg w języku C.

Nauczyliśmy się, z jakich elementów są wykonane, jakiego rodzaju danych używają, jak są zakodowani i jakie znaki obsługują każdy typ.

Wyjaśniliśmy również różne sposoby deklarowania tablic lub wskaźników do przechowywania strun, a także instrukcje ich alokacji.

Aby pomóc Ci uzyskać przyczepność ze strunami w tym języku, użyliśmy praktycznych przykładów i fragmentów kodu, aby pokazać, czym są ciągi i jak korzystać.