Chaînes en C: Comment déclarer une variable, initialiser, imprimer, exemple

Table des matières:

Anonim

Qu'est-ce que la chaîne en C?

Une chaîne en C n'est rien d'autre qu'une collection de caractères dans une séquence linéaire. «C» traite toujours une chaîne comme une seule donnée même si elle contient des espaces. Un seul caractère est défini à l'aide d'une représentation par guillemets simples. Une chaîne est représentée par des guillemets doubles.

Example, "Welcome to the world of programming!"

'C' fournit la bibliothèque standard qui contient de nombreuses fonctions qui peuvent être utilisées pour effectuer facilement des opérations compliquées sur des chaînes en C.

Dans ce didacticiel, vous apprendrez-

  • Comment déclarer et initialiser une chaîne en C
  • Entrée de chaîne: lire une chaîne
  • Sortie de chaîne: imprimer / afficher une chaîne
    • fonction fputs ()
    • met la fonction
  • La bibliothèque de chaînes
  • Conversion d'une chaîne en nombre

Comment déclarer et initialiser une chaîne en C

AC String est un tableau simple avec char comme type de données. Le langage 'C' ne prend pas directement en charge la chaîne comme type de données. Par conséquent, pour afficher une chaîne en C, vous devez utiliser un tableau de caractères.

La syntaxe générale pour déclarer une variable en tant que chaîne en C est la suivante,

char string_variable_name [array_size];

La déclaration classique de chaînes peut être effectuée comme suit:

 char string_name[string_length] = "string"; 

La taille d'un tableau doit être définie lors de la déclaration d'une variable de chaîne C car elle est utilisée pour calculer le nombre de caractères qui seront stockés dans la variable de chaîne en C. Voici quelques exemples valides de déclaration de chaîne:

char first_name[15]; //declaration of a string variablechar last_name[15];

L'exemple ci-dessus représente des variables de chaîne avec une taille de tableau de 15. Cela signifie que le tableau de chaînes C donné est capable de contenir 15 caractères au maximum. L'indexation du tableau commence à 0 par conséquent, il stockera les caractères d'une position de 0 à 14. Le compilateur C ajoute automatiquement un caractère NULL '\ 0' au tableau de caractères créé.

Étudions l'initialisation des chaînes en C. L'exemple suivant montre l'initialisation des chaînes en C,

char first_name[15] = "ANTHONY";char first_name[15] = {'A','N','T','H','O','N','Y','\0'}; // NULL character '\0' is required at end in this declarationchar string1 [6] = "hello";/* string size = 'h'+'e'+'l'+'l'+'o'+"NULL" = 6 */char string2 [ ] = "world"; /* string size = 'w'+'o'+'r'+'l'+'d'+"NULL" = 6 */char string3[6] = {'h', 'e', 'l', 'l', 'o', '\0'} ; /*Declaration as set of characters ,Size 6*/

Dans string3, le caractère NULL doit être ajouté explicitement et les caractères sont placés entre guillemets simples.

«C» nous permet également d'initialiser une variable chaîne sans définir la taille du tableau de caractères. Cela peut être fait de la manière suivante,

char first_name[ ] = "NATHAN";

Le nom des chaînes en C agit comme un pointeur car il s'agit essentiellement d'un tableau.

Entrée de chaîne: lire une chaîne

Lors de l'écriture de programmes interactifs qui demandent une entrée à l'utilisateur, C fournit les fonctions scanf (), gets () et fgets () pour trouver une ligne de texte saisie par l'utilisateur.

Lorsque nous utilisons scanf () pour lire, nous utilisons le spécificateur de format "% s" sans utiliser le "&" pour accéder à l'adresse de la variable car un nom de tableau agit comme un pointeur. Par exemple:

#include int main() {char name[10];int age;printf("Enter your first name and age: \n");scanf("%s %d", name, &age);printf("You entered: %s %d",name,age);}

Production:

Enter your first name and age:John_Smith 48

Le problème avec la fonction scanf est qu'elle ne lit jamais des chaînes entières en C. Elle arrêtera le processus de lecture dès qu'un espace, un saut de page, une tabulation verticale, une nouvelle ligne ou un retour chariot se produira. Supposons que nous donnions une entrée en tant que "Tutoriels Guru99", alors la fonction scanf ne lira jamais une chaîne entière car un caractère d'espacement apparaît entre les deux noms. La fonction scanf ne lira que Guru99.

Pour lire une chaîne contenant des espaces, nous utilisons la fonction gets (). Gets ignore les espaces. Il arrête la lecture lorsqu'une nouvelle ligne est atteinte (la touche Entrée est enfoncée) .Par exemple:

#include int main() {char full_name[25];printf("Enter your full name: ");gets(full_name);printf("My full name is %s ",full_name);return 0;}

Production:

Enter your full name: Dennis RitchieMy full name is Dennis Ritchie

Une autre alternative plus sûre à gets () est la fonction fgets () qui lit un nombre spécifié de caractères. Par exemple:

#include int main() {char name[10];printf("Enter your name plz: ");fgets(name, 10, stdin);printf("My name is %s ",name);return 0;}

Production:

Enter your name plz: CarlosMy name is Carlos

Les arguments fgets () sont:

  • le nom de la chaîne,
  • le nombre de caractères à lire,
  • stdin signifie lire à partir de l'entrée standard qui est le clavier.

Sortie de chaîne: imprimer / afficher une chaîne

La fonction printf standard est utilisée pour imprimer ou afficher des chaînes en C sur un périphérique de sortie. Le spécificateur de format utilisé est% s

Exemple,

printf("%s", name);

La sortie de chaîne se fait avec les fonctions fputs () et printf ().

fonction fputs ()

Le fputs () a besoin du nom de la chaîne et d'un pointeur vers l'endroit où vous souhaitez afficher le texte. Nous utilisons stdout qui fait référence à la sortie standard pour imprimer à l'écran, par exemple:

#include int main(){char town[40];printf("Enter your town: ");gets(town);fputs(town, stdout);return 0;}

Production:

Enter your town: New YorkNew York

met la fonction

La fonction put est utilisée pour imprimer la chaîne en C sur un périphérique de sortie et pour ramener le curseur à la première position. Une fonction put peut être utilisée de la manière suivante,

#include int main() {char name[15];gets(name); //reads a stringputs(name); //displays a stringreturn 0;}

La syntaxe de cette fonction est comparativement simple à celle des autres fonctions.

La bibliothèque de chaînes

La bibliothèque standard «C» fournit diverses fonctions pour manipuler les chaînes dans un programme. Ces fonctions sont également appelées gestionnaires de chaînes. Tous ces gestionnaires sont présents dans le fichier d'en-tête .

Fonction But
strlen () Cette fonction est utilisée pour trouver la longueur d'une chaîne. Il renvoie le nombre de caractères présents dans une chaîne à l'exclusion du caractère NULL.
strcat (str1, str2) Cette fonction est utilisée pour combiner deux chaînes ensemble pour former une seule chaîne. Il ajoute ou concatène str2 à la fin de str1 et renvoie un pointeur vers str1.
strcmp (str1, str2) Cette fonction permet de comparer deux chaînes entre elles. Il renvoie 0 si str1 est égal à str2, inférieur à 0 si str1 str2.

Considérons le programme ci-dessous qui illustre les fonctions de la bibliothèque de chaînes:

#include #include int main () {//string initializationchar string1[15]="Hello";char string2[15]=" World!";char string3[15];int val;//string comparisonval= strcmp(string1,string2);if(val==0){printf("Strings are equal\n");}else{printf("Strings are not equal\n");}//string concatenationprintf("Concatenated string:%s",strcat(string1,string2)); //string1 contains hello world!//string lengthprintf("\nLength of first string:%d",strlen(string1));printf("\nLength of second string:%d",strlen(string2));//string copyprintf("\nCopied string is:%s\n",strcpy(string3,string1)); //string1 is copied into string3return 0;}

Production:

Strings are not equalConcatenated string:Hello World!Length of first string:12Length of second string:7Copied string is:Hello World!

Les autres fonctions importantes de la bibliothèque sont:

  • strncmp (str1, str2, n): il renvoie 0 si les n premiers caractères de str1 sont égaux aux n premiers caractères de str2, inférieur à 0 si str1 str2.
  • strncpy (str1, str2, n) Cette fonction est utilisée pour copier une chaîne d'une autre chaîne. Copie les n premiers caractères de str2 dans str1
  • strchr (str1, c): il renvoie un pointeur sur la première occurrence de char c dans str1, ou NULL si caractère non trouvé.
  • strrchr (str1, c): il recherche str1 en sens inverse et renvoie un pointeur sur la position de char c dans str1, ou NULL si le caractère n'est pas trouvé.
  • strstr (str1, str2): il renvoie un pointeur vers la première occurrence de str2 dans str1, ou NULL si str2 est introuvable.
  • strncat (str1, str2, n) Ajoute (concatène) les n premiers caractères de str2 à la fin de str1 et renvoie un pointeur vers str1.
  • strlwr (): pour convertir une chaîne en minuscules
  • strupr (): pour convertir une chaîne en majuscules
  • strrev (): pour inverser la chaîne

Conversion d'une chaîne en nombre

En programmation C, nous pouvons convertir une chaîne de caractères numériques en une valeur numérique pour éviter une erreur d'exécution. La bibliothèque stdio.h contient les fonctions suivantes pour convertir une chaîne en nombre:

  • int atoi (str) Signifie ASCII en entier; il convertit str en valeur int équivalente. 0 est renvoyé si le premier caractère n'est pas un nombre ou si aucun nombre n'est rencontré.
  • double atof (str) Signifie ASCII à float, il convertit str en la valeur double équivalente. 0.0 est renvoyé si le premier caractère n'est pas un nombre ou si aucun nombre n'est rencontré.
  • long int atol (str) Signifie ASCII en long int, Convertit str en valeur entière longue équivalente. 0 est renvoyé si le premier caractère n'est pas un nombre ou si aucun nombre n'est rencontré.

Le programme suivant montre la fonction atoi ():

#include int main(){char *string_id[10];int ID;printf("Enter a number: ");gets(string_id);ID = atoi(string_id);printf("you enter %d ",ID);return 0;}

Production:

Enter a number: 221348you enter 221348
  • Une déclaration de pointeur de chaîne telle que char * string = "language" est une constante et ne peut pas être modifiée.

Résumé

  • Une chaîne est une séquence de caractères stockée dans un tableau de caractères.
  • Une chaîne est un texte entre guillemets doubles.
  • Un caractère tel que «d» n'est pas une chaîne et il est indiqué par des guillemets simples.
  • «C» fournit des fonctions de bibliothèque standard pour manipuler des chaînes dans un programme. Les manipulateurs de chaîne sont stockés dans le fichier d'en-tête .
  • Une chaîne doit être déclarée ou initialisée avant d'être utilisée dans un programme.
  • Il existe différentes fonctions de chaîne d'entrée et de sortie, chacune d'entre elles a ses caractéristiques.
  • N'oubliez pas d'inclure la bibliothèque de chaînes pour travailler avec ses fonctions
  • Nous pouvons convertir une chaîne en nombre grâce aux atoi (), atof () et atol () qui sont très utiles pour les processus de codage et de décodage.
  • Nous pouvons manipuler différentes chaînes en définissant un tableau de chaînes en C.