Co to jest tablica ciągów znaków?

Ciąg znaków to zbiór znaków, a tablica ciągu znaków to tablica tablic znaków. Każdy ciąg znaków jest zakończony znakiem zerowym. Tablica ciągu jest jednym z najczęstszych zastosowań tablic dwuwymiarowych.

scanf () to funkcja wejściowa ze specyfikatorem formatu% s do odczytu ciągu jako danych wejściowych z terminala. Ale wadą jest to, że kończy się, gdy tylko napotka przestrzeń. Aby tego uniknąć, funkcja gets () może odczytywać dowolną liczbę ciągów znaków, w tym spacje.

Sting to tablica znaków zakończona znakiem specjalnym znanym jako znak zerowy („\ 0”).

Składnia

datatype name_of_the_array(size_of_elements_in_array);
char str_name(size);

Przykład

datatype name_of_the_array ( ) = ( Elements of array );
char str_name(8) = “Strings”;

Str_name to nazwa ciągu, a rozmiar określa długość ciągu (liczbę znaków).

Ciąg może być zdefiniowany jako jednowymiarowa tablica znaków, więc tablica ciągów jest dwuwymiarową tablicą znaków.

Składnia

char str_name(size)(max);

Składnia

char str_arr(2)(6) = ( ('g', 'o', 'u', 'r', 'i', '\0'), ('r', ' a', ' m', '\0'));

Alternatywnie możemy nawet zadeklarować to jako

Składnia

char str_arr(2)(6) =(“gouri”, ”ram”);

Z podanej składni są dwa indeksy dolne. Pierwszy służy do określenia liczby ciągów do zadeklarowania, a drugi do zdefiniowania maksymalnej długości znaków, które każdy ciąg może przechowywać, w tym znaku zerowego. Koncepcja C wyjaśnia już, że każdy znak zajmuje 1 bajt danych podczas przydzielania pamięci, powyższy przykład składni zajmuje 2 * 6 = 12 bajtów pamięci.

Przykład

char str_name(8) = ('s', 't', 'r', 'i', 'n', 'g', 's', '\0');
By the rule of initialization of array, the above declaration can be written as
char str_name() = “Strings”;

0 1 2 3 4 5 6 7 Indeks

Zmienne 2000 2001 2002 2003 2004 2005 2006 2007 Adres

Jest to reprezentacja sposobu przydzielania ciągów w pamięci dla wyżej zadeklarowanego ciągu w C.

Każdy znak w ciągu ma przypisany indeks i adres do każdego znaku w ciągu. W powyższej reprezentacji znak zerowy („\ 0”) jest automatycznie umieszczany przez kompilator C na końcu każdego łańcucha, gdy inicjuje on zadeklarowaną tablicę. Zazwyczaj ciągi deklarowane są przy użyciu podwójnych cudzysłowów zgodnie z regułami inicjowania ciągów, a gdy kompilator napotka podwójne cudzysłowy, automatycznie dodaje znak null na końcu łańcucha.

Z powyższego przykładu, ponieważ wiemy, że nazwa tablicy wskazuje na 0. indeks i adres 2000, ponieważ wiemy, że indeksowanie tablicy rozpoczyna się od 0. Dlatego też

str_name + 0 points to the character “s”
str_name + 1 points to the character “t”

Tak jak powyższy przykład dotyczy jednowymiarowej tablicy, więc wskaźnik wskazuje na każdy znak ciągu.

Przykłady ciągu tablicy w C

#include
int main()
(
char name(10);
printf("Enter the name: ");
fgets(name, sizeof(name), stdin);
printf("Name is : ");
puts(name);
return 0;
)

Teraz w przypadku tablic dwuwymiarowych mamy następującą składnię i przydział pamięci. W tym celu możemy przyjąć go jako reprezentację wiersza i kolumny (format tabeli).

char str_name(size)(max);

W tej tabeli reprezentacja każdego wiersza (pierwszy indeks dolny) definiuje się jako liczbę ciągów do zapisania, a kolumna (drugi indeks dolny) określa maksymalną długość łańcuchów.

char str_arr(2)(6) = ( ('g', 'o', 'u', 'r', 'i', '\0'), ('r', ' a', ' m', '\0'));

Alternatywnie możemy nawet zadeklarować to jako

Składnia:

char str_arr(2)(8) =(“gouri”, ”ram”);

Indeks

Wydziwianie

0 1 2) 3) 4 5 6 7
0solourja\ 0\ 0\ 0
1rzam\ 0\ 0\ 0\ 0\ 0

Z powyższego przykładu wiemy, że nazwa tablicy wskazuje na 0 ciąg. W związku z tym,

str_name + 0 punktów do 0 ciągu „gouri”

str_name + 1 punkty do 1. ciągu „ram”

Jak powyższy przykład dotyczy tablic dwuwymiarowych, wskaźnik wskazuje na każdy ciąg tablicy.

#include
int main()
(
int i;
char name(2)(8) = (
“gouri”,
“ram”
);
for (i = 0; i < 2; i++)
(
printf(“String = %s \n”, name + i, name + i);
)
return 0;
)

Wynik:

Funkcje ciągów

strcpy (s1, s2); ta funkcja kopiuje ciąg s2 do żądła s1.
char s1(10) = “gouri”;
char s2 (10) = “ram”;
char s3 (10) ;
strcpy(s3, s2);
result => strcpy(s3, s2) : ram

strcat (s1, s2); ta funkcja łączy łańcuchy s1 i s2, łańcuch s2 jest dołączany na końcu łańcucha s1.
char s1(10) = “gouri”;
char s2 (10) = “ram”;
strcat(s1, s2);
result => strcat(s1, s2) : gouriram

strlen (s1); ta funkcja zwraca długość łańcucha s1.
char s1(10) = “gouri”;
strlen(s1);
result => 5

strcmp (s1, s2); Ta funkcja porównuje oba ciągi s1 i s2.
style="list-style-type: none;">
style="list-style-type: none;">

strchr (s1, ch); funkcje te znajdują pierwsze wystąpienie danego znaku ch w ciągu s1, a wskaźnik wskazuje na ten znak w ciągu.

strstr (s1, s2); znajduje to pierwsze wystąpienie ciągu s2 w ciągu s1, a wskaźnik wskazuje na ciąg s2 w ciągu s1.

Niektóre nieprawidłowe operacje to str_arr (0) = „gouri”; w tej operacji wskaźnik łańcucha jest przypisywany do stałego wskaźnika, który jest nieprawidłowy i nie jest możliwy, ponieważ nazwa tablicy jest stałym wskaźnikiem.

Aby tego uniknąć, możemy przypisać str_arr za pomocą strcpy (str_arr (0), „gouri”).

Wniosek

Sama tablica definiuje się jako lista ciągów znaków. Z powyższego wstępu możemy wywnioskować, że deklaracja i inicjalizacja łańcuchów są różne, ponieważ widzieliśmy, że dla każdego łańcucha kompilator dodaje znak null, gdy odczytuje łańcuch jako dane wejściowe. Istnieje wiele funkcji obsługi ciągów, kilka funkcji z przykładami wyjaśniono powyżej. Dlatego tablice ciągu są tak proste jak tablice.

Polecane artykuły

Jest to przewodnik po tablicy łańcuchów znaków w C. Omawiamy podstawy łańcuchów znaków, przykład łańcucha znaków w C i funkcje łańcuchów znaków. Możesz także przejrzeć nasze inne sugerowane artykuły, aby dowiedzieć się więcej -

  1. Tablica ciągów w C #
  2. Tablica wielowymiarowa w C
  3. Tablice w programowaniu C.
  4. Tablice 2D w C #
  5. Jak działa tablica w Uniksie ze składnią?