Matrice de șiruri în C

Matrice de șiruri în C

În programarea C String este o matrice 1-D de caractere și este definită ca o matrice de caractere. Dar o matrice de șiruri în C este o matrice bidimensională de tipuri de caractere. Fiecare șir este terminat cu un caracter nul ( ). Este o aplicație a unui tablou 2d.

Sintaxă:

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

Aici,

    var_name este numele variabilei din C. r este numărul maxim de valori de șir care pot fi stocate într-o matrice de șiruri. c este numărul maxim de valori de caractere care pot fi stocate în fiecare matrice de șiruri.

Exemplu:

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;> }>

Ieșire

String array Elements are: Geek Geeks Geekfor 

Mai jos este reprezentarea programului de mai sus

Reprezentarea în memorie a matricei de șiruri

Avem 3 rânduri și 10 coloane specificate în Array of String, dar din cauza prespecificării, dimensiunea matricei de șiruri, consumul de spațiu este mare. Deci, pentru a evita un consum mare de spațiu în programul nostru, putem folosi o matrice de pointeri în C.

Operații nevalide în matrice de șiruri

Nu putem schimba direct sau aloca valorile unei matrice de șiruri în C.

Exemplu:

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

Aici, arr[0] = GFG; // Aceasta va da o eroare care spune atribuirea expresiei cu un tip de matrice.

Pentru a schimba valorile putem folosi funcția strcpy() în C

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

Matrice de pointeri de șiruri

În C putem folosi un Array de pointeri. În loc să avem o matrice de caractere bidimensională, putem avea o matrice unidimensională de Pointeri. Aici este stocat indicatorul către primul caracter al literalului șir.

Sintaxă:

char *arr[] = { 'Geek', 'Geeks', 'Geekfor' }; 
Matrice de pointeri de șiruri

Mai jos este programul C pentru a imprima o serie de pointeri:

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;> }>

Ieșire

String array Elements are: Geek Geeks Geekfor