C - Stringhe

Le stringhe sono in realtà una matrice unidimensionale di caratteri terminata da un file nullcarattere "\ 0". Quindi una stringa con terminazione null contiene i caratteri che compongono la stringa seguita da anull.

La seguente dichiarazione e inizializzazione creano una stringa composta dalla parola "Hello". Per contenere il carattere null alla fine della matrice, la dimensione della matrice di caratteri contenente la stringa è maggiore di uno rispetto al numero di caratteri nella parola "Hello".

char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};

Se segui la regola di inizializzazione dell'array, puoi scrivere l'istruzione sopra come segue:

char greeting[] = "Hello";

Di seguito è riportata la presentazione in memoria della stringa definita sopra in C / C ++ -

In realtà, non si inserisce il carattere null alla fine di una costante di stringa. Il compilatore C inserisce automaticamente "\ 0" alla fine della stringa quando inizializza l'array. Proviamo a stampare la stringa di cui sopra -

#include <stdio.h>

int main () {

   char greeting[6] = {'H', 'e', 'l', 'l', 'o', '\0'};
   printf("Greeting message: %s\n", greeting );
   return 0;
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

Greeting message: Hello

C supporta un'ampia gamma di funzioni che manipolano stringhe con terminazione null -

Sr.No. Funzione e scopo
1

strcpy(s1, s2);

Copia la stringa s2 nella stringa s1.

2

strcat(s1, s2);

Concatena la stringa s2 alla fine della stringa s1.

3

strlen(s1);

Restituisce la lunghezza della stringa s1.

4

strcmp(s1, s2);

Restituisce 0 se s1 e s2 sono uguali; minore di 0 se s1 <s2; maggiore di 0 se s1> s2.

5

strchr(s1, ch);

Restituisce un puntatore alla prima occorrenza del carattere ch nella stringa s1.

6

strstr(s1, s2);

Restituisce un puntatore alla prima occorrenza della stringa s2 nella stringa s1.

L'esempio seguente utilizza alcune delle funzioni sopra menzionate:

#include <stdio.h>
#include <string.h>

int main () {

   char str1[12] = "Hello";
   char str2[12] = "World";
   char str3[12];
   int  len ;

   /* copy str1 into str3 */
   strcpy(str3, str1);
   printf("strcpy( str3, str1) :  %s\n", str3 );

   /* concatenates str1 and str2 */
   strcat( str1, str2);
   printf("strcat( str1, str2):   %s\n", str1 );

   /* total lenghth of str1 after concatenation */
   len = strlen(str1);
   printf("strlen(str1) :  %d\n", len );

   return 0;
}

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

strcpy( str3, str1) :  Hello
strcat( str1, str2):   HelloWorld
strlen(str1) :  10