Chaînes en C (avec exemples)

Dans ce didacticiel, vous découvrirez les chaînes de programmation en C. Vous apprendrez à les déclarer, à les initialiser et à les utiliser pour diverses opérations d'E / S à l'aide d'exemples.

En programmation C, une chaîne est une séquence de caractères terminée par un caractère nul . Par exemple:

 char c() = "c string"; 

Lorsque le compilateur rencontre une séquence de caractères entre guillemets doubles, il ajoute par défaut un caractère nul à la fin.

Comment déclarer une chaîne?

Voici comment déclarer des chaînes:

 char s(5); 

Ici, nous avons déclaré une chaîne de 5 caractères.

Comment initialiser des chaînes?

Vous pouvez initialiser les chaînes de plusieurs manières.

 char c() = "abcd"; char c(50) = "abcd"; char c() = ('a', 'b', 'c', 'd', ''); char c(5) = ('a', 'b', 'c', 'd', ''); 

Prenons un autre exemple:

 char c(5) = "abcde";

Ici, nous essayons d'assigner 6 caractères (le dernier caractère est '') à un chartableau de 5 caractères. C'est mauvais et vous ne devriez jamais faire cela.

Attribution de valeurs aux chaînes

Les tableaux et les chaînes sont des citoyens de seconde classe en C; ils ne prennent pas en charge l'opérateur d'affectation une fois qu'il est déclaré. Par exemple,

 char c(100); c = "C programming"; // Error! array type is not assignable.

Remarque: utilisez la fonction strcpy () pour copier la chaîne à la place.

Lire la chaîne de l'utilisateur

Vous pouvez utiliser la scanf()fonction pour lire une chaîne.

La scanf()fonction lit la séquence de caractères jusqu'à ce qu'elle rencontre des espaces (espace, nouvelle ligne, tabulation, etc.).

Exemple 1: scanf () pour lire une chaîne

 #include int main() ( char name(20); printf("Enter name: "); scanf("%s", name); printf("Your name is %s.", name); return 0; ) 

Production

 Entrez le nom: Dennis Ritchie Votre nom est Dennis.

Même si Dennis Ritchie a été entré dans le programme ci-dessus, seul "Dennis" a été stocké dans la chaîne de nom. C'est parce qu'il y avait un espace après Dennis.

Comment lire une ligne de texte?

Vous pouvez utiliser la fgets()fonction pour lire une ligne de chaîne. Et, vous pouvez utiliser puts()pour afficher la chaîne.

Exemple 2: fgets () et met ()

 #include int main() ( char name(30); printf("Enter name: "); fgets(name, sizeof(name), stdin); // read string printf("Name: "); puts(name); // display string return 0; ) 

Production

 Entrez le nom: Tom Hanks Nom: Tom Hanks 

Ici, nous avons utilisé la fgets()fonction pour lire une chaîne de l'utilisateur.

fgets(name, sizeof(name), stdlin); // read string

Les sizeof(name)résultats à 30. Par conséquent, nous pouvons prendre un maximum de 30 caractères en entrée, ce qui correspond à la taille de la chaîne de nom.

Pour imprimer la chaîne, nous avons utilisé puts(name);.

Remarque: La gets()fonction peut également être de prendre des entrées de l'utilisateur. Cependant, il est supprimé de la norme C.
C'est parce que gets()vous permet de saisir n'importe quelle longueur de caractères. Par conséquent, il peut y avoir un débordement de tampon.

Passer des chaînes aux fonctions

Les chaînes peuvent être passées à une fonction de la même manière que les tableaux. En savoir plus sur la transmission de tableaux à une fonction.

Exemple 3: Passer une chaîne à une fonction

 #include void displayString(char str()); int main() ( char str(50); printf("Enter string: "); fgets(str, sizeof(str), stdin); displayString(str); // Passing string to a function. return 0; ) void displayString(char str()) ( printf("String Output: "); puts(str); ) 

Chaînes et pointeurs

Semblables aux tableaux, les noms de chaînes sont «décomposés» en pointeurs. Par conséquent, vous pouvez utiliser des pointeurs pour manipuler des éléments de la chaîne. Nous vous recommandons de vérifier les tableaux C et les pointeurs avant de vérifier cet exemple.

Exemple 4: Chaînes et pointeurs

 #include int main(void) ( char name() = "Harry Potter"; printf("%c", *name); // Output: H printf("%c", *(name+1)); // Output: a printf("%c", *(name+7)); // Output: o char *namePtr; namePtr = name; printf("%c", *namePtr); // Output: H printf("%c", *(namePtr+1)); // Output: a printf("%c", *(namePtr+7)); // Output: o )

Fonctions de chaîne couramment utilisées

  • strlen () - calcule la longueur d'une chaîne
  • strcpy () - copie une chaîne dans une autre
  • strcmp () - compare deux chaînes
  • strcat () - concatène deux chaînes

Articles intéressants...