Čo je to reťazec?

Reťazec je skupina znakov, pole reťazca je pole polí znakov. Každý reťazec je zakončený nulovým znakom. Pole reťazca je jednou z najbežnejších aplikácií dvojrozmerných polí.

scanf () je vstupná funkcia so špecifikátorom formátu% s na čítanie reťazca ako vstupu z terminálu. Nevýhodou však je, že skončí, len čo narazí na priestor. Aby ste tomu zabránili, funkcia get () dokáže prečítať ľubovoľný počet reťazcov vrátane medzier.

Sting je pole znakov ukončené špeciálnym znakom známym ako nulový znak („\ 0“).

syntax

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

príklad

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

Str_name je názov reťazca a veľkosť určuje dĺžku reťazca (počet znakov).

Reťazec možno definovať ako jednorozmerné pole znakov, takže pole reťazcov je dvojrozmerné pole znakov.

syntax

char str_name(size)(max);

syntax

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

Inak to môžeme dokonca vyhlásiť za

syntax

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

Z danej syntaxe existujú dva odbery, prvý je, koľko reťazcov sa má deklarovať a druhým je definovanie maximálnej dĺžky znakov, ktoré môže každý reťazec uložiť, vrátane nulového znaku. Koncept C už vysvetľuje, že každý znak má pri prideľovaní pamäte 1 bajt údajov, vyššie uvedený príklad syntaxe zaberá 2 * 6 = 12 bajtov pamäte.

prí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

Premenné 2000 2001 2002 2003 2004 2005 2006 2007 Adresa

Toto je znázornenie toho, ako sú reťazce alokované v pamäti pre vyššie uvedený reťazec v C.

Každý znak v reťazci má index a adresu pridelenú každému znaku v reťazci. Vo vyššie uvedenom znázornení je nulový znak („\ 0“) automaticky umiestnený kompilátorom C na koniec každého reťazca, keď inicializuje vyššie deklarované pole. Zvyčajne sú reťazce deklarované pomocou dvojitých úvodzoviek podľa pravidiel inicializácie reťazcov a keď kompilátor narazí na dvojité úvodzovky, automaticky pridá nulový znak na koniec reťazca.

Z vyššie uvedeného príkladu, ako vieme, že názov poľa ukazuje na 0. index a adresu 2000, ako už vieme, indexovanie poľa začína od 0. Preto,

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

Ako vyššie uvedený príklad platí pre jednorozmerné pole, takže ukazovateľ ukazuje na každý znak reťazca.

Príklady Array String v C

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

Teraz pre dvojrozmerné polia máme nasledujúcu syntax a alokáciu pamäte. Z tohto dôvodu to môžeme brať ako reprezentáciu riadkov a stĺpcov (formát tabuľky).

char str_name(size)(max);

V tomto znázornení tabuľky každý riadok (prvý dolný index) definuje ako počet reťazcov, ktoré sa majú uložiť, a stĺpec (druhý dolný index) definuje maximálnu dĺžku reťazcov.

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

Inak to môžeme dokonca vyhlásiť za

syntaxe:

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

index

riadky

0 1 2 3 4 5 6 7
0gourja\ 0\ 0\ 0
1rm\ 0\ 0\ 0\ 0\ 0

Z vyššie uvedeného príkladu vieme, že názov poľa ukazuje na 0. reťazec. Z tohto dôvodu

str_name + 0 bodov na 0. reťazec „gouri“

str_name + 1 body na 1. reťazec „ram“

Ako vyššie uvedený príklad platí pre dvojrozmerné polia, takže ukazovateľ ukazuje na každý reťazec poľa.

#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ýkon:

Funkcie reťazcov

strcpy (S1, S2); táto funkcia kopíruje reťazec s2 na bod s1.
char s1(10) = “gouri”;
char s2 (10) = “ram”;
char s3 (10) ;
strcpy(s3, s2);
result => strcpy(s3, s2) : ram

strčte (S1, S2); táto funkcia zreťazí reťazce s1 a s2, reťazec s2 sa pripojí na koniec reťazca s1.
char s1(10) = “gouri”;
char s2 (10) = “ram”;
strcat(s1, s2);
result => strcat(s1, s2) : gouriram

strlen (s1); táto funkcia vráti dĺžku reťazca s1.
char s1(10) = “gouri”;
strlen(s1);
result => 5

strcmp (S1, S2); Táto funkcia porovnáva obe reťazce s1 a s2.
style="list-style-type: none;">
style="list-style-type: none;">

strchr (sl, ch); tieto funkcie nájdu prvý výskyt daného znaku ch v reťazci s1 a ukazovateľ ukazuje na tento znak v reťazci.

strstr (S1, S2); to nájde prvý výskyt reťazca s2 v reťazci s1 a ukazovateľ ukazuje na reťazec s2 v reťazci s1.

S niektorými neplatnými operáciami sú str_arr (0) = “gouri”; v tejto operácii je ukazovateľ reťazca priradený konštantnému ukazovateľovi, ktorý je neplatný a nie je možný, pretože názov poľa je konštantný ukazovateľ.

Aby sme tomu zabránili, môžeme str_arr priradiť pomocou strcpy (str_arr (0), „gouri“).

záver

Samotné pole sa definuje ako zoznam reťazcov. Z vyššie uvedeného úvodu môžeme vyvodiť záver, že deklarácia a inicializácia reťazcov sa líšia, ako sme videli pri každom reťazci, ktorý kompilátor pridá nulový znak, keď načíta reťazec ako vstup. Existuje veľa funkcií spracovania reťazcov, niekoľko funkcií s príkladmi je vysvetlené vyššie. Polia reťazca sú preto rovnako ľahké ako polia.

Odporúčané články

Toto je sprievodca reťazcom poľa v C. Tu diskutujeme základy reťazcov poľa, príklad reťazca reťazcov v C a funkcie reťazcov. Viac informácií nájdete aj v ďalších navrhovaných článkoch -

  1. String Array v C #
  2. Viacrozmerné pole v C
  3. Polia v programovaní C
  4. 2D polia v C #
  5. Ako Array pracuje v Unixe so syntaxou?

Kategórie: