1 Cours: Atelier de programmation C Chapitre 7: Les chaînes de caractères Unive
1 Cours: Atelier de programmation C Chapitre 7: Les chaînes de caractères Université de Monastir Réalisé par: Dr. Sakka Rouis Taoufik 2 I. Déclaration Syntaxes: char nom_chaine [taille] ; char *nom_chaine ; Exemples : char NOM [20]; char PRENOM [30]; char *ADRESSE; Chapitre 7 : Les chaînes de caractères 3 II. Memorisation Une chaîne de caractère à une suite d’octets terminée par ‘\0’. Le nom d’une chaîne est le représentant de l'adresse du premier caractère de la chaîne. Pour mémoriser une variable qui doit être capable de contenir un texte de N caractère nous avons besoin de N+1 octets en mémoire. Exemple : char TXT[10] = "BONJOUR !"; Chapitre 7 : Les chaînes de caractères 4 III. Accès aux éléments d’une chaîne L’accès à un élément d’une chaîne de caractère peut se faire de la même façon que l’accès à un élément d’un tableau. Exemple : char T[8] = "BONJOUR"; Chapitre 7 : Les chaînes de caractères 'B' 'O' 'N' 'J' 'O' 'U' 'R' '\0' T T[0] T[1] T[2] T[3] T[4] T[5] T[6] T[7] 5 IV. Les fonctions de <stdio.h> Le langage C offre plusieurs possibilités de lecture ou d’écriture de chaînes. L’utilisation du code de format %s dans les fonctions printf et scanf. Les fonctions spécifiques de lecture gets ou d’affichage puts d’une chaîne. Chapitre 7 : Les chaînes de caractères 6 IV. Les fonctions de <stdio> A. La fonction «puts» Syntaxe : puts (<chaîne>) ; «puts» écrit la chaîne de caractère désignée par «chaîne» et provoque un retour à la ligne. Exemple: char * txt="bonjour“ ; puts (txt) ; /*est équivalent à printf("%s", txt) ; */ B. La fonction «gets» Syntaxe : gets(<chaîne>) ; «gets» lit une ligne de caractères et la copie à l’adresse indiquée par <chaîne >. Exemple: char * txt ; gets (txt) ; /*est équivalent à scanf ("%s", txt) ; */ Chapitre 7 : Les chaînes de caractères 7 V. Les fonctions de <ctype.h> Les fonctions de <ctype.h> servent à classifier et à convertir des caractères. Les fonctions de <ctype.h> sont indépendantes du code de caractères de la machine et favorisent la portabilité des programmes. Dans la suite, <c> représente une valeur du type int qui peut être représentée comme caractère. Les fonctions de classification suivantes fournissent un résultat du type int différent de zéro, si la condition respective est remplie, sinon zéro. Chapitre 7 : Les chaînes de caractères 8 V. Les fonctions de <ctype.h> Chapitre 7 : Les chaînes de caractères Fonction: Résultat isupper(<c>) si <c> est une majuscule ('A'...'Z') islower(<c>) si <c> est une minuscule ('a'...'z') isdigit(<c>) si <c> est un chiffre décimal ('0'...'9') isspace(<c>) si <c> est un signe d’espacement (‘ ‘,’\t’,’\n’,’\r’,’\f’) 9 V. Les fonctions de <ctype.h> Les fonctions de conversion suivantes fournissent une valeur du type int qui peut être représentée comme caractère; la valeur originale de <c> reste inchangée: Chapitre 7 : Les chaînes de caractères tolower(<c>) retourne <c> converti en minuscule si <c> est une majuscule toupper(<c>) retourne <c> converti en majuscule si <c> est une minuscule 10 VI. Les fonctions de <string> La bibliothèque <string.h> fournit une multitude de fonctions pratiques pour le traitement de chaînes de caractères. Voici une brève description des fonctions les plus fréquemment utilisées. Dans le tableau suivant : <n> représente un nombre du type int. Les symboles <s> et <t> peuvent être remplacés par : une chaîne de caractères constante. le nom d'une variable déclarée comme tableau de char. <c> représente un caractère de type char. Chapitre 7 : Les chaînes de caractères 11 VI. Les fonctions de <string> Chapitre 7 : Les chaînes de caractères Fonction Résultat strlen(<s>) fournit la longueur de la chaîne sans compter le '\0' final strcat(<s>, <t>) ajoute <t> à la fin de <s> strncat(<s>, <t>, <n>) ajoute au plus <n> caractères de <t> à la fin de <s> strcmp(<s>, <t>) compare <s> et <t> lexico graphiquement et fournit un résultat: négatif si <s> précède <t> zéro si <s> est égal à <t> positif si <s> suit <t> strcpy (<s>, <t>) copie <t> vers <s> strncpy(<s>, <t>, <n>) copie au plus <n> caractères de <t> vers <s> strchr(<s>, <c>) Recherche, dans la chaîne <s> la première position où apparaît le caractère mentionné <c> strrchr(<s>, <c>) Recherche, dans la chaîne <s> (en commence à partir de la fin de <s>) la dernière position où apparaît le caractère mentionné <c>. strstr(<s>,<t>) Recherche, dans la chaîne <s> la première occurrence complète de la sous chaîne <t> mentionné. 12 VII. Les fonctions de <stdlib.h> La bibliothèque <stdlib.h> contient des déclarations de fonctions pour la conversion de nombres en chaînes de caractères et vice-versa. Chaîne Nombre Les trois fonctions définies ci-dessous correspondent au standard ANSI-C et sont portables. Le symbole <s> peut être remplacé par : une chaîne de caractères constante le nom d'une variable déclarée comme tableau de char Chapitre 7 : Les chaînes de caractères 13 VII. Les fonctions de <stdlib.h> Conversion de chaînes de caractères en nombres Chapitre 7 : Les chaînes de caractères atoi(<s>) retourne la valeur numérique représentée par <s> comme int atol(<s>) retourne la valeur numérique représentée par <s> comme long atof(<s>) retourne la valeur numérique représentée par <s> comme double (!) Règles générales pour la conversion: Les espaces au début d'une chaîne sont ignorés Il n'y a pas de contrôle du domaine de la cible La conversion s'arrête au premier caractère non convertible Pour une chaîne non convertible, les fonctions retournent zéro 14 VIII. Exercices d’application Exercice 1 : Ecrire un programme qui demande l'introduction du nom et du prénom de l'utilisateur et qui affiche alors la longueur totale du nom sans compter les espaces. Exercice 2 : Ecrire un programme qui lit deux chaînes de caractères CH1 et CH2, les compare lexico graphiquement et affiche le résultat: Exemple: Introduisez la première chaîne: ABC Introduisez la deuxième chaîne: abc Affiche le message "ABC précède abc" Chapitre 7 : Les chaînes de caractères 15 VIII. Exercices d’application Exercice 3 : Ecrire un programme qui lit deux chaînes de caractères CH1 et CH2 et qui copie la première moitié de CH1 et la première moitié de CH2 dans une troisième chaîne CH3. Afficher le résultat. Utiliser les fonctions spéciales de <string>. Chapitre 7 : Les chaînes de caractères 16 VIII. Exercices d’application Exercice 4 : Ecrire un programme qui lit un verbe régulier en "er" au clavier et qui en affiche la conjugaison au présent de l'indicatif de ce verbe. Contrôlez s'il s'agit bien d'un verbe en "er" avant de conjuguer. Exemple: Verbe : fêter je fête tu fêtes il fête nous fêtons vous fêtez ils fêtent Chapitre 7 : Les chaînes de caractères 17 VIII. Exercices d’application Exercice 5 : Ecrire un programme qui lit 10 mots et les mémorise dans un tableau de chaînes de caractères. Trier les 10 mots lexico graphiquement en utilisant les fonctions strcmp et strcpy. Afficher le tableau trié. Utilisez la méthode de tri par sélection directe Exercice 6 : Ecrire un programme qui lit 5 mots, séparés par des espaces et qui les affiche ensuite dans une ligne, mais dans l'ordre inverse. Les mots sont mémorisés dans un tableau de chaînes de caractères. Exemple voici une petite phrase ! ! phrase petite une voici Chapitre 7 : Les chaînes de caractères uploads/Litterature/ ch-7-prog-cv2-chaines.pdf
Documents similaires










-
37
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Fev 27, 2022
- Catégorie Literature / Litté...
- Langue French
- Taille du fichier 0.4762MB