Upgrade to Pro — share decks privately, control downloads, hide ads and more …

chapitre 1: les chaine de caractères en C

chapitre 1: les chaine de caractères en C

chapitre 1

Boughida Adil

April 07, 2022
Tweet

More Decks by Boughida Adil

Other Decks in Education

Transcript

  1. Les chaînes de caractères Le type « chaîne » n’existe

    pas en langage C. En langage C: Une chaîne de caractères est un tableau d’élément de type char. Dont le dernier élément est le caractère nul ‘\0’.  Ce caractère n’est pas affichable.  Il indique la fin de la chaîne de caractères. Exemple: La chaîne "Bonjour" est représentée par : B o n j o u r \0 Les chaînes de caractères 1
  2. Comment déclarer une chaîne de caractères On déclare un tableau

    de caractères. De taille LongeurChaine + 1 (réservation de place en mémoire) char Nom_du_tableau[Nombre_elements + 1] ; On peut mettre une taille max (ex: 200). La chaîne se terminera au ‘\0’. (on aura réserver de la place pour rien) Exemples B o n j o u r \0 Les chaînes de caractères 2 char mot [ 50 + 1] ; char phrase [ 250 ] ;
  3. Initialisation d’une chaîne Caractère par caractère Les chaînes de caractères

    3 char mot [3 +1 ]; //déclaration //Initialisation mot [0] =‘a’; mot [1] =‘i’; mot [2] =‘e’; mot [3] =‘\0’; A la déclaration //comme un tableau char phrase [200] = { 'B', 'o', 'n', 'j', 'o', 'u', 'r', '\0' }; // spécifique aux chaîne de caractères // le caractère de fin de chaîne '\0' est géré automatiquement char phrase [200] = "Bonjour" ; // On a réservé de la place pour rien. On a besoin de seulement d’un tableau de longueur 8 (7 pour "Bonjour" + caractère null ‘/0’)
  4. Initialisation d’une chaîne Les chaînes de caractères 4 A la

    déclaration // On peut ne pas attribuer la taille de tableau lors de l’initialisation. // La taille du tableau sera égale à la longueur de la chaine de caractères // + le caractère null \0 qui sera ajouté à la fin du tableau automatiquement. char phrase [] = { 'B', 'o', 'n', 'j', 'o', 'u', 'r', '\0' }; char phrase [] = "Bonjour" ;
  5. Initialisation d’une chaîne Exemple Les chaînes de caractères 5 char

    MonMot [4 + 1] ; // réservation de place en mémoire MonMot [0] = ‘M’; //initialisation caractère par caractère MonMot [1] = ‘i’; MonMot [2] = ‘a’; MonMot [3] = ‘m’; MonMot [4] = ‘\0’; // Déclaration + initialisation // initialisation comme un tableau classique char MonMot [4 + 1] = { ‘M’, ‘i’, ‘a’, ‘m’, ‘\0’ } ; // Déclaration + initialisation //Spécifique aux chaînes de caractères char MonMot [4 + 1] = "Miam" ; // le ‘\0’ est rajouté automatiquement
  6. Caractères spéciaux \0 caractère de fin de chaîne (NULL) \"

    guillemet \\ barre oblique. \n retour à la ligne Les chaînes de caractères 6 cout<<"PinPon"; cout<<"Pin\0Pon"; cout<<"Pin\\Pon"; cout<<"Pin\nPon"; > PinPon > Pin > Pin\Pon > Pin Pon
  7. Exemple Les chaînes de caractères 7 int LongueurChaine( char ch[

    ] ); // Déclaration de la fonction LongueurChaine int main() { char chaine[255] = "Bonjour"; int longueur = LongueurChaine(chaine); cout<<longueur<<endl; // Le programme affiche 7 } /* Définition de la fonction LongueurChaine. */ int LongueurChaine( char ch[ ] ) { int i = 0; while ( ch[i] != ‘\0’) // on parcours la chaîne jusqu’à arriver au caractère ‘\0’ i++; return i; }
  8. Restriction On ne peut pas affecter une chaîne en dehors

    de la déclaration. On ne peut pas affecter une chaîne à une autre. On ne peut pas comparer deux chaînes . Les chaînes de caractères 8 char mot[8] = "bonjour"; // OK char mot[8] ; mot = "bonjour"; // ERREUR char mot1[8] ; char mot2[8] ; // déclaration de deux chaînes … mot1 = mot2; // ERREUR char mot1[8] , char mot2[8] ;// déclaration de deux chaînes … if(mot1 == mot2) // ERREUR
  9. Lecture d’une chaine de caractères En utilisant scanf()  Utiliser

    la spécification de champ %s dans scanf pour lire la chaîne  Lire les caractères jusqu'au prochain espace blanc rencontré  Le language C stocke le caractère nul (\0) après le dernier caractère d'espace non blanc Les chaînes de caractères 9
  10. Exemple Les chaînes de caractères 10 int main() { //

    on lire une chaine de caractère* dans le variable name printf(“Lire votre nom et prénom: ”); char name[14]; scanf(“%s”, &name); printf(“Votre nom et prénom: %s”, name); } > Lire votre nom et prénom: Adel Boughida Votre nom et prénom: Adel Problème: scanf() permet de lire seulement les caractères avant le premier espace rencontré Solution: utiliser gets()
  11. Lecture d’une chaine de caractères En utilisant gets() L'inconvénient de

    la lecture d'une chaîne à l'aide de scanf() est qu'elle ne lit pas les espaces. • Si la chaîne à lire en tant qu'entrée contient des caractères d'espace blanc intégrés, utilisez la fonction standard gets(). Les chaînes de caractères 11
  12. Exemple Les chaînes de caractères 12 int main() { //

    on lire une chaine de caractère* dans le variable name avec gets printf(“Lire une chaine SVP: ”); char chaine[10]; gets(chaine); printf(“La chaine: %s”, chaine); } > Lire une chaine SVP: Math info La chaine: Math info Problème: scanf() permet de lire seulement les caractères avant le premier espace rencontré Solution: utiliser gets()
  13. Ecriture d’une chaine de caractères En utilisant printf() Utilisez la

    spécification de champ %s dans printf pour écrire une chaine de caractères. les caractères de la chaîne qui sont imprimées sont jusqu'à \0 En utilisant puts() L'inconvénient de l'impression d'une chaîne à l'aide de printf() est qu'elle n'imprime pas d'espaces blancs. • Si la chaîne à imprimer en tant que sortie contient des caractères d'espacement intégrés, utilisez la fonction standard puts(). Les chaînes de caractères 13
  14. Exemple Les chaînes de caractères 14 int main() { //

    on déclare 2 chaînes char nom[5] = "Adel"; printf("|%s|", nom); //affiche |Adel| char nom2[14] = "Adel Boughida"; printf("%s", nom2); //affiche Adel puts(nom2); //affiche Adel Boughida } |Adel| Adel Adel Boughida
  15. Fonctions de la bibliothèque standard Fonctions de manipulation de chaînes

    de caractères. (définies dans string.h). strlen(char chaine[ ]) Retourne la longueur de la chaîne chaine. strcpy(char chaineDest[], char chaineSource[]) Copie la chaîne chaineSource dans chaineDest. Les chaînes de caractères 15
  16. Fonctions de la bibliothèque standard strcmp ( char chaine1[] ,

    char chaine2[]) Retourne 0 si les deux chaînes sont identiques. strcat (char chaineDest[] , char chaineSource[] ) Recopie la chaine chaineSource à la suite de chaineDest. Strnset (char chaine [], char c, int n)  Elle remplace les n premiers caractères d'une chaîne par un caractère donné c. Si n est supérieur à la longueur de la chaîne, la longueur de la chaîne est utilisée à la place de n. Les chaînes de caractères 16
  17. Exemple Les chaînes de caractères 17 int main() { //

    on déclare 2 chaînes char chaine1[20] = "bonjour"; char chaine2[20]; // L’utilisateur rentre chaine2 printf("Ecrivez votre nom"); scanf("%s", &chaine2); //on ajoute un espace à chaine1 strcat(chaine1," "); //on ajoute chaine2 à chaine1 strcat(chaine1,chaine2); printf("%s", chaine1); } > Ecrivez votre nom Adel > bonjour Adel Strcat()
  18. Exemple Les chaînes de caractères 18 int main() { //

    on déclare 2 chaînes char chaine1[20] = "bonjour"; char chaine2[20]; // On copie le contenu de chaine1 dans chaine2 strcpy(chaine2, chaine1); printf("%s", chaine2); // On compare si les deux chaines // sont identique if(strcmp(str, str2) == 0) { printf("les deux chaines sont identiques"); } } bonjour les deux chaines sont identiques Strcmp() and strcpy()
  19. Exemple Les chaînes de caractères 19 int main() { //

    on déclare une chaîne char chaine1[20] = "bonjour"; int longueur; // Calcul de longueur de la chaine1 longueur = strlen(chaine1); printf(" La longueur de la chaine égale à %d", longueur); } La longueur de la chaine égale à 7 Strlen()