GNU/Linux >> Tutoriels Linux >  >> Linux

Tutoriel de programmation Linux C Partie 9 :Chaînes

Dans cette série de didacticiels sur la programmation en C, nous avons déjà abordé le concept de tableaux de caractères. Étroitement lié aux tableaux de caractères est le concept de chaînes, dont nous discuterons ici.

Une chaîne diffère d'un tableau de caractères dans une zone principale - elle se termine par un caractère nul '\0'. Il n'y a pas de tel caractère de fin dans un tableau de caractères. Le morceau de code suivant montre quelques manières de définir une chaîne :

#include 

int main()
{
char str[] ="string";
char str1[] ={ 's','t','r','i','n','g','\0'};
char str2[10] ="string";
char str3 [10] ={'s','t','r','i','n','g','\0'} ;
char *str4 ="chaîne" ;

printf("\n str=%s, str1=%s, str2=%s, str3=%s et str4=%s", str, str1, str2, str3, str4);

renvoie 0 ;
}

Ainsi, un groupe de caractères entre guillemets doubles est une chaîne (le caractère Null de fin y est implicite), et une série de caractères se terminant explicitement par un caractère \0 est également une chaîne.

La sortie de ce programme est :

 str=chaîne, str1=chaîne, str2=chaîne, str3=chaîne et str4=chaîne

Gardez à l'esprit que vous ne pouvez pas imprimer des tableaux de caractères non-chaîne de cette façon, car il n'y a pas de caractère Null de fin pour signifier la fin du tableau. Voici un morceau de code qui essaie de faire cela :

#include 

int main()
{
char str[] ={'e','n','d'} ;
char c ='t';

printf("\n str=%s", str);

return 0;
}

Mais finit par imprimer des valeurs parasites à la fin :

str=end ??

Ensuite, tout comme le spécificateur de format %s dans 'Printf' indique au compilateur de traiter les variables d'entrée comme des chaînes, vous pouvez également utiliser %s dans la fonction 'scanf' pour accepter les chaînes comme entrée de l'utilisateur. Voici un exemple :

#include 

int main()
{
char str[30];

printf("\n Saisissez une chaîne d'une longueur inférieure à 30 caractères :");
scanf("%s",str);

printf("\n str=%s", str);

renvoie 0 ;
}

Il convient de mentionner qu'une séquence de zéro ou plusieurs caractères entourés de guillemets doubles est appelée une constante de chaîne ou un littéral de chaîne. Cela signifie que "howtoforge" et "" sont des constantes de chaîne ou des littéraux de chaîne.

Vous pouvez trouver la longueur d'une chaîne en utilisant la fonction standard strlen(). Voici un exemple :

#include 

int main()
{
char str[] ="howtoforge";

printf( "\n La longueur de la chaîne 'howtoforge' est :%d", strlen(str));

renvoie 0 ;
}

La sortie produite par ce programme est 10, qui est exactement le nombre de caractères dans 'howtoforge', et donc sa longueur.

Ensuite, il convient de garder à l'esprit qu'un caractère entre guillemets simples (comme "d") et un caractère entre guillemets doubles (comme "d") sont différents l'un de l'autre. Alors que le premier est une constante de caractère (qui peut être utilisée pour produire la valeur numérique du caractère dans le jeu de caractères de la machine), le second est une chaîne (ce qui signifie qu'il contient un caractère \0 de fin).

Enfin, regardons rapidement comment les chaînes peuvent être passées en arguments aux fonctions.

#include 

void change_value(char s[])
{
s[0] ='H';
s[ 5] ='F';

printf("%s", s);

}

int main()
{
char str[] ="howtoforge";

change_value(str);

return 0;
}

Ainsi, dans le programme ci-dessus, c'est le nom du tableau 'str' qui est passé en argument car il fait référence à l'adresse de base du tableau. La déclaration de la fonction 'change_value' est telle qu'elle attend un tableau en entrée. Voici la sortie de ce programme :

HowtoForge                                                                                                   

Ainsi, dans ce didacticiel, nous avons abordé les bases des chaînes, y compris la façon dont elles sont définies et comment elles peuvent être utilisées. Nous en apprendrons plus sur les chaînes dans les didacticiels à venir, mais cet article devrait suffire à vous aider à démarrer. Faites-nous savoir dans les commentaires ci-dessous si vous avez des questions ou des doutes concernant les chaînes.


Linux
  1. Tutoriel de programmation en C Partie 3 - Notions de base sur les variables

  2. Tutoriel de programmation en C Partie 5 - Variables de caractères

  3. Tutoriel de programmation Linux C Partie 10 - Portées variables

  4. Tutoriel de programmation Linux C Partie 8 - Appel par valeur Vs Appel par pointeur/adresse

  5. Tutoriel de programmation Linux C Partie 8 - Appel par valeur Vs Appel par pointeur/adresse

Exemples de commandes Linux curl – Partie 2

Exemples de commandes Linux curl – Partie 1

Chaînes de concaténation bash

Tutoriel de commande de chaînes Linux pour les débutants (5 exemples)

Comment utiliser bash if -z et if -n pour tester des chaînes sous Linux

Tout est un fichier sous Linux - Partie 2