Strings dans la langue C

Strings dans la langue C

Les cordes sont souvent utilisées dans la langue C. Grâce à eux, un programme affiche les messages ou les résultats à l'utilisateur, entre les informations dans le système, génère ou consulte les informations dans les bases de données, compare ou recherche des mots dans un texte, etc. Ils sont également utilisés pour les fonctions pour spécifier les chemins de fichier, sélectionner les répertoires de travail, etc.

Dans cet article sur Linux Hint, vous apprendrez tout sur les chaînes. Nous expliquerons à zéro ce qu'est une chaîne, quels éléments il consiste et comment il est créé.

Nous verrons également une section spéciale qui explique quels sont les caractères spéciaux et quel rôle les caractères de contrôle jouent-ils dans une chaîne.

Après l'explication théorique, nous verrons les plusieurs exemples pratiques avec des extraits de code et des images où nous vous apprenons à créer les chaînes et à utiliser les fonctions de base que le langage C fournit à leur gestion.

Strings dans la langue C

Une chaîne est un morceau de texte qui se compose de caractères alphanumériques, de symboles et de caractères de contrôle. Le compilateur traite tout ce qui est enfermé en citations comme une chaîne et place automatiquement un caractère nul après le dernier caractère pour indiquer la fin.

Ensuite, regardons la chaîne la plus connue de la programmation:

"Bonjour le monde"

La langue C stocke les chaînes dans les tableaux d'éléments de type de type ou de char non signé. Le type de données des éléments doit être spécifié dans la déclaration du tableau comme indiqué dans ce qui suit:

char String_1 [20];
NARGE UNSIGNED CHAR STRING_2 [20];

Dans ce cas, le tableau String_1 a 20 éléments de type de type et le tableau String_2 a 20 éléments de type de type non signé.

Le type de données des éléments du tableau détermine le jeu de caractères que la chaîne accepte. Un type de données de charbon accepte un seul caractère ASCII 7 bits. Le bit restant est utilisé comme signe de signe et de parité, donc seuls les caractères entre 0h00 et 0h80 de la table ASCII peuvent être représentés dans ce type de données.

Les caractères du type de char non signé n'utilisent pas de bit de signe, donc leurs 8 bits sont utilisés pour représenter les caractères entre 0h00 et 0hff du code ASCII étendu.

En plus des caractères et symboles alphanumériques, une chaîne peut également contenir les caractères de contrôle.

Les caractères d'échappement et de contrôle dans la langue C

Les caractères de contrôle ont la fonction d'exécuter des actions spécifiques dans la chaîne qui les contient. Par exemple, un caractère «\ n» avant le début d'une chaîne signifie qu'il doit être écrit sur une nouvelle ligne.

#inclure
void main ()
printf ("\ nhello world");

Le caractère d'échappement à la fin de la chaîne indique que la chaîne doit être écrite et que le curseur est déplacé vers la ligne suivante.

#inclure
void main ()
printf ("Hello World \ n");

Toutes les séquences d'échappement sont constituées d'un caractère alphanumérique qui est précédé d'une barre oblique inverse.

Ensuite, nous voyons un tableau des caractères d'évasion les plus couramment utilisés dans la langue C:

\ n Nouvelle ligne
\ r Retour en chariot
\un Bip alerte
\ t Tabulation
\ V Tabulation verticale
\ b Arrière
\F Se nourrir

En plus de ces caractères d'échappement, il y a des séquences qui indiquent au compilateur qu'il doit inclure certains symboles dans la chaîne. Par exemple, si nous voulons inclure un caractère à double devis dans le texte, le compilateur l'interpréterait comme un terminateur de la chaîne et non comme un autre caractère de celui-ci. Pour cette raison, certains symboles doivent être précédés d'une barre oblique inverse afin que le compilateur puisse insérer. Dans l'exemple suivant, nous voyons ce que ce sont:

\ " Insérer des citations doubles
\ ' Insérer des citations simples
\\ Insérer
\? Insérer un point d'interrogation

:

Comment créer une chaîne dans la langue C

L'une des façons de déclarer une chaîne est de créer un tableau de caractères de type de type ou de char non signé d'une certaine taille, comme suit:

Char Str [50];
str = "Hello World";

De cette façon, le compilateur traite les données qui sont stockées dans le tableau en tant que chaîne unique en attribuant un caractère nul à la fin de celui-ci.

Comment créer une chaîne constante dans la langue C

Pour créer une chaîne constante, vous devez déclarer un tableau de caractères de caractères de type ou de char non signé sans spécifier sa taille. Ensuite, attribuez la chaîne à lui comme indiqué dans ce qui suit:

Char Str [] = "Hello World";

Le compilateur met automatiquement un caractère nul à la fin de la chaîne pour indiquer sa fin. Avec ce type de chaîne, il n'est pas possible de modifier le contenu.

Comment créer un pointeur vers la chaîne dans la langue C

Une autre façon de stocker une chaîne est de déclarer un pointeur vers le tableau qui le stocke. Cette méthode alloue dynamiquement la taille du tableau de caractères. Voici la bonne façon de déclarer un pointeur de chaîne:

char * s_ptr;
S_PTR = "Hello World";

La méthode du pointeur est la plus utilisée par les fonctions du langage C pour se référer à une chaîne dans leurs arguments d'entrée et de sortie.

Fonctions pour gérer les cordes

Lors de la programmation, il est important de mémoriser les fonctions de base pour gérer les chaînes car nous les utilisons encore et encore. Si vous les maîtrisez, votre travail ira beaucoup plus vite.

Toutes les fonctions de gestion des chaînes sont définies dans la «chaîne.en-tête h ”. Pour en utiliser, vous devez inclure ce fichier dans votre code comme suit:

#inclure

Dans la section suivante, nous vous montrerons brièvement comment utiliser les fonctions de gestion des chaînes de base dans le langage C.

Comment afficher une chaîne dans la langue C

La façon la plus courante d'afficher une chaîne à l'écran est d'utiliser les fonctions printf () ou put (), toutes deux définies dans le «stdio.en-tête h ”. Ces fonctions acceptent une chaîne ou un pointeur vers une chaîne comme argument d'entrée.

Maintenant, voyons comment une chaîne peut être affichée à l'écran à l'aide de la fonction printf ():

#inclure
void main ()
printf ("Hello World 1 \ n");
char str [15] = "\ nhello world 2 \ n";
printf ("% s", str);

Si vous utilisez la fonction printf () et passez un pointeur de chaîne comme dans le deuxième cas, vous devez spécifier dans quel format il doit être affiché. Puisqu'il s'agit d'une chaîne dans ce cas, ce format est spécifié avec «% s» comme premier argument d'entrée.

Dans la figure suivante, vous pouvez voir la compilation et l'exécution de ce code:

Comment copier une chaîne en langue C

Il existe plusieurs façons de copier une chaîne dans la langue C. La méthode la plus couramment utilisée est la fonction strcpy () qui est définie dans la «chaîne.en-tête h ”. Dans l'exemple suivant, nous examinerons la syntaxe de cette fonction:

Strcpy (S1, S2);

La fonction strcpy () copie la chaîne «S2» à la chaîne «S1» et insère un caractère nul à la fin. La chaîne «S2» peut être spécifiée explicitement ou implicitement.

Exemple:

Le code suivant copie la chaîne «S2» explicitement spécifiée en chaîne «S1» et l'affiche dans la console de commande:

#inclure
#inclure
vide main ()

char s1 [20] = "";
strcpy (s1, "\ n \ nhello world \ n \ n");
printf ("% s", s1);

L'image suivante montre la compilation et l'exécution de ce code. Dans ce cas, Strcpy () copie la chaîne de «S2» à «S1», puis l'imprime à l'écran à l'aide de la fonction printf ():

Comment concaténer deux chaînes dans la langue C

La fonction que le langage C fournit pour concaténer deux chaînes est strcat (). Examinons la syntaxe de cette fonction dans ce qui suit:

Strcat (S1, S2);

Cette fonction concaténe la chaîne «S2» en chaîne «S1». Comme toutes les fonctions de traitement des chaînes, strcat () place un caractère nul à la fin de la chaîne concaténée. «S1» et «S2» peuvent être spécifiés explicitement ou implicitement.

Exemple:

#inclure
#inclure
vide main ()

char s1 [20] = "\ n \ nhello";
strcat (s1, "world \ n \ n");
printf ("% s", s1);

L'image suivante montre la compilation et l'exécution de ce code. Dans ce cas, Strcat () concatène la chaîne Sring «S2» à la chaîne «S1» puis l'imprime à l'écran à l'aide de la fonction printf ():

Comment comparer deux chaînes dans la langue C

La fonction que le langage C fournit pour comparer les chaînes est strcmp (). Examinons la syntaxe de cette fonction dans ce qui suit:

int strcmp (s1, s2);

La fonction strcmp () compare les chaînes «S1» et «S2». S'ils sont égaux, il renvoie un résultat égal à 0. S'ils ne sont pas égaux, il renvoie un résultat qui n'est pas égal à 0.


Exemple:

#inclure
#inclure
vide main ()

char s1 [50] = "égal";
char s2 [50] = "égal";
char s3 [50] = "pas égal";
//cas 1
if (strcmp (s1, s2) == 0)
printf ("\ n \ ns1 et s2 sont égaux \ n \ n");
autre
printf ("\ n \ ns1 et s2 ne sont pas égaux \ n \ n");
// Cas 2
if (strcmp (s1, s3) == 0)
printf ("\ n \ ns1 et s3 sont égaux \ n \ n");
autre
printf ("\ n \ ns1 et s3 ne sont pas égaux \ n \ n");

Nous voyons la compilation et l'exécution de ce code dans la figure suivante. Dans le cas 1, «S1» et «S2» sont les mêmes, donc strcmp () renvoie 0. Dans le cas 2, «S1» et «S3» ne sont pas égaux, donc le programme entre dans la déclaration «else» de la déclaration «IF».

Comment couper une chaîne en fragments

La fonction strsep () fragmente la chaîne qui est indiquée par Stringp en morceaux, en commençant par un délimiteur spécifié dans son argument d'entrée «Delim». Regardons maintenant la syntaxe de cette fonction:

char * strSep (char ** restrect stringp, const char * restrict délim);

Lorsque strsep () rencontre un délimiteur, il le remplace par un caractère nul qui marque la fin du nouveau fragment et définit le pointeur sur Stringp à la position suivante. Cette fonction renvoie le pointeur vers le nouveau fragment sur chaque appel, ou un pointeur nul s'il ne trouve plus de délimiteurs.

Exemple:

Dans cet exemple, nous fragmenons le "Aujourd'hui est une excellente journée pour la programmation" chaîne et utilisez un espace comme délimiteur afin que la chaîne soit fragmentée mot par mot, que nous publions à la console de commande à l'aide de la fonction printf (). L'appel à la fonction strsep () est répété dans une boucle de temps jusqu'à ce qu'il ne trouve plus de délimiteur et renvoie un pointeur nul.

#inclure
#inclure
vide main ()

char s_in [50] = "aujourd'hui est une excellente journée de programmation";
char * in_ptr = s_in;
char del [4] = "";
char * o_ptr;
Pendant (o_ptr != Null)
o_ptr = strsep (& in_ptr, del);
printf ("% s \ n \ n", o_ptr);

L'image suivante montre la compilation et l'exécution de ce code. Comme nous pouvons le voir, strsep () fragmente la chaîne mot par mot et la fonction printf () imprime chaque mot à une nouvelle ligne de la console de commande:

Conclusion

Dans cet article de Linux Hint, nous avons expliqué ce que consiste une chaîne dans la langue C.

Nous avons appris de quels éléments ils sont faits, quel type de données ils utilisent, comment ils sont codés et quels caractères prennent chaque type.

Nous avons également expliqué les différentes façons de déclarer les tableaux ou les pointeurs pour stocker les cordes, ainsi que les instructions pour les allouer.

Pour vous aider à obtenir une prise avec des chaînes dans cette langue, nous avons utilisé les exemples pratiques et les extraits de code pour vous montrer ce que sont les chaînes et comment utiliser certaines des fonctions de traitement de base de chaînes.