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 :
HowtoForgeAinsi, 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.