Co je pole řetězců?

Řetězec je skupina znaků, pole řetězce je pole polí znaků. Každý řetězec je zakončen nulovým znakem. Pole řetězce je jednou z nejčastějších aplikací dvourozměrných polí.

scanf () je vstupní funkce se specifikátorem formátu% s pro čtení řetězce jako vstupu z terminálu. Nevýhodou však je, že skončí, jakmile narazí na prostor. Aby se tomu zabránilo, funkce get () umí číst libovolný počet řetězců včetně mezer.

Sting je pole znaků zakončené speciálním znakem známým jako nulový znak („\ 0“).

Syntax

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

Příklad

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

Str_name je název řetězce a velikost určuje délku řetězce (počet znaků).

Řetězec lze definovat jako jednorozměrné pole znaků, takže pole řetězců je dvourozměrné pole znaků.

Syntax

char str_name(size)(max);

Syntax

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

Alternativně to můžeme dokonce prohlásit za

Syntax

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

Z dané syntaxe existují dva odběry, z nichž první je, kolik řetězců se má deklarovat, a druhé je definování maximální délky znaků, které může každý řetězec uložit, včetně znaku null. Koncept C již vysvětluje, že každý znak má při přidělování paměti 1 bajt dat, výše uvedený příklad syntaxe zabírá 2 * 6 = 12 bajtů paměti.

Příklad

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 Index

Proměnné 2000 2001 2002 2003 2004 2005 2006 2007 Adresa

Toto je reprezentace toho, jak jsou řetězce přidělovány v paměti pro výše uvedený řetězec v C.

Každému znaku v řetězci je přiřazen index a adresa každému znaku v řetězci. Ve výše uvedené reprezentaci je nulový znak („\ 0“) automaticky umístěn kompilátorem C na konec každého řetězce, když inicializuje výše deklarované pole. Obvykle jsou řetězce deklarovány pomocí dvojitých uvozovek podle pravidel inicializace řetězců a když kompilátor narazí na dvojité uvozovky, automaticky přidá nulový znak na konec řetězce.

Z výše uvedeného příkladu, jak víme, že název pole ukazuje na 0. index a adresu 2000, jak již víme, indexování pole začíná od 0. Proto,

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

Jako výše uvedený příklad platí pro jednorozměrné pole, takže ukazatel ukazuje na každý znak řetězce.

Příklady řetězce řetězců v C

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

Nyní pro dvojrozměrná pole máme následující syntaxi a přidělení paměti. Z tohoto důvodu můžeme vzít jako reprezentaci řádků a sloupců (formát tabulky).

char str_name(size)(max);

V této reprezentaci tabulky každý řádek (první index) definuje jako počet řetězců, které mají být uloženy, a sloupec (druhý index) definuje maximální délku řetězců.

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

Alternativně to můžeme dokonce prohlásit za

Syntax:

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

Index

Řádky

0 1 2 3 4 5 6 7
0GÓuri\ 0\ 0\ 0
1rAm\ 0\ 0\ 0\ 0\ 0

Z výše uvedeného příkladu, jak víme, název pole odkazuje na 0. řetězec. Proto,

str_name + 0 bodů na 0. řetězec „gouri“

str_name + 1 body na 1. řetězec „ram“

Jako výše uvedený příklad platí pro dvourozměrná pole, takže ukazatel ukazuje na každý řetězec pole.

#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;
)

Výstup:

Funkce řetězců

strcpy (sl, s2); tato funkce zkopíruje řetězec s2 na bod s1.
char s1(10) = “gouri”;
char s2 (10) = “ram”;
char s3 (10) ;
strcpy(s3, s2);
result => strcpy(s3, s2) : ram

strcat (sl, s2); tato funkce zřetězí řetězce s1 a s2, řetězec s2 je připojen na konec řetězce s1.
char s1(10) = “gouri”;
char s2 (10) = “ram”;
strcat(s1, s2);
result => strcat(s1, s2) : gouriram

strlen (sl); tato funkce vrací délku řetězce s1.
char s1(10) = “gouri”;
strlen(s1);
result => 5

strcmp (sl, s2); Tato funkce porovnává oba řetězce s1 a s2.
style="list-style-type: none;">
style="list-style-type: none;">

strchr (sl, ch); tyto funkce najdou první výskyt daného znaku ch v řetězci s1 a ukazatel na tento znak v řetězci odkazuje.

strstr (sl, s2); to najde první výskyt řetězce s2 v řetězci s1 a ukazatel ukazuje na řetězec s2 v řetězci s1.

S některými neplatnými operacemi jsou str_arr (0) = “gouri”; v této operaci je ukazatel řetězce přiřazen konstantnímu ukazateli, který je neplatný a není možný, protože název pole je konstantní ukazatel.

Abychom tomu zabránili, můžeme přiřadit str_arr pomocí strcpy (str_arr (0), „gouri“).

Závěr

Pole samotné definuje jako seznam řetězců. Z výše uvedeného úvodu můžeme dospět k závěru, že deklarace a inicializace řetězců jsou odlišné, jak jsme viděli pro každý řetězec, který kompilátor přidá nulový znak, když čte řetězec jako vstup. Existuje mnoho funkcí pro práci s řetězci, několik funkcí s příklady je vysvětleno výše. Proto jsou pole řetězce stejně snadná jako pole.

Doporučené články

Toto je průvodce řetězcem Array v C. Zde diskutujeme základy řetězců Array, příklad řetězců Array v C a funkce řetězců. Další informace naleznete také v dalších navrhovaných článcích -

  1. Řetězcové pole v C #
  2. Vícerozměrné pole v C
  3. Pole v programování v C
  4. 2D pole v C #
  5. Jak Array pracuje v Unixu se syntaxí?

Kategorie: