Pole řetězců v C

Pole řetězců v C

V programování C je řetězec 1-D pole znaků a je definován jako pole znaků. Ale pole řetězců v C je dvourozměrné pole typů znaků. Každý řetězec je ukončen znakem null ( ). Jedná se o aplikaci 2D pole.

Syntax:

char variable_name[r] = {list of string}; 

Tady,

    var_name je název proměnné v C. r je maximální počet hodnot řetězců, které lze uložit do pole řetězců. c je maximální počet hodnot znaků, které lze uložit do každého pole řetězců.

Příklad:

C




// C Program to print Array> // of strings> #include> // Driver code> int> main()> {> > char> arr[3][10] = {> 'Geek'> ,> > 'Geeks'> ,> 'Geekfor'> };> > printf> (> 'String array Elements are: '> );> > > for> (> int> i = 0; i <3; i++)> > {> > printf> (> '%s '> , arr[i]);> > }> > return> 0;> }>

Výstup

String array Elements are: Geek Geeks Geekfor 

Níže je uvedena reprezentace výše uvedeného programu

Paměťová reprezentace pole řetězců

V našem Array of String máme specifikovaných 3 řádky a 10 sloupců, ale kvůli předspecifikaci je velikost pole řetězců velká spotřeba místa. Abychom se vyhnuli vysoké spotřebě místa v našem programu, můžeme použít Array of Pointers v C.

Neplatné operace v polích řetězců

Nemůžeme přímo změnit nebo přiřadit hodnoty k poli řetězců v C.

Příklad:

 char arr[3][10] = {'Geek', 'Geeks', 'Geekfor'}; 

Zde arr[0] = GFG; // Tím se zobrazí chyba, která říká přiřazení výrazu s typem pole.

Ke změně hodnot můžeme použít funkci strcpy() v C

 strcpy(arr[0],'GFG'); // This will copy the value to the arr[0]. 

Pole ukazatelů řetězců

V C můžeme použít pole ukazatelů. Namísto 2-dimenzionálního pole znaků můžeme mít jednorozměrné pole ukazatelů. Zde je uložen ukazatel na první znak řetězcového literálu.

Syntax:

char *arr[] = { 'Geek', 'Geeks', 'Geekfor' }; 
Pole ukazatelů řetězců

Níže je uveden program C pro tisk pole ukazatelů:

C




// C Program to print Array> // of Pointers> #include> // Driver code> int> main()> {> > char> *arr[] = {> 'Geek'> ,> 'Geeks'> ,> 'Geekfor'> };> > printf> (> 'String array Elements are: '> );> > > for> (> int> i = 0; i <3; i++)> > {> > printf> (> '%s '> , arr[i]);> > }> > return> 0;> }>

Výstup

String array Elements are: Geek Geeks Geekfor