Back
Close

7 - Les chaînes de caractères

Pedro77
10.1K views
Next: Exercice 1

Introduction

Les exercices de cette séance portent sur les affichages et manipulations de chaînes de caractères.

Pour réaliser ces exercices, vous veillerez également à employer les techniques vues lors des précédentes séances.

Sauf si l'énoncé permet d'encoder directement du code, cette série d'exercice est à résoudre avec Visual Studio.

NB: on prendra soin d'utiliser gets_s() pour saisir correctement du texte ! Exemple :

#pragma warning(disable:4996)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char str[100] = "\0", ch[2] = "\0";

    printf("Entrez un mot : ");
    gets_s(str,100); //saisie clavier stockée dans str qui est un vecteur de 100 char

    printf("Entrez une lettre : ");
    gets_s(ch,2);

    printf("Le mot : %s\n"
           "la lettre : %c.", str, ch[0]);
    return 0;
}

qui donne, par exemple :

Entrez un mot : bonjour
Entrez une lettre : b
Le mot : bonjour
la lettre : b.

Pour rappel

Visual Studio est disponible gratuitement (https://ecolevirtuelle.provincedeliege.be/ctrl/ctrl_gestion.openDocument?p_idNode=1177603)

Une fois Visual Studio installé, vous pouvez créer un projet par exercice !! (Fichiers > Nouveau > Projets...)

Au départ, vous pouvez toujours commencer par taper (ou copier-coller ;-D) les lignes suivantes :

#pragma warning(disable:4996)
#include <stdio.h>
#include <stdlib.h>

int main()
{

    return 0;
}

Ensuite, vous pouvez écrire votre code en ligne 7 juste avant l'instruction return 0;

Le bouton "Exécuter sans débogage" (triangle "play" vert) permet de recompiler et exécuter tout votre projet.

À toutes fins utiles, voici à nouveau le document contenant des infos utiles sur l'utilisation du debogueur de Visual Studio : https://ecolevirtuelle.provincedeliege.be/ctrl/ctrl_gestion.openDocument?p_idNode=1177599

Rappels sur les chaînes de caractères

En C, les chaînes de caractères sont des vecteurs de caractères (char en anglais) et pour stocker un texte, il faut donc avoir créé un tableau de caractères assez grand pour contenir tout le texte. De plus, toutes les chaînes de caractères en C se terminent forcément, dans la mémoire de l'ordinateur, par le caractère \0 qui ne s'affichera jamais mais permet de savoir que la chaîne est finie.

Pour pouvoir saisir ou afficher une chaîne de caractères avec un scanf ou un printf, on utilise le symbole %s.

Lien : https://www.youtube.com/watch?v=qqSHpG_UvQw

Fonctions de traitement des chaînes de caractères

Il existe plusieurs fonctions permettant de travailler avec des chaînes de caractères. Vous en trouverez quelques-unes ci-après. (Toutes ces fonctions sont définies dans la librairie standard string.h.



size_t strlen(const char* chaine);

strlen est une fonction qui calcule la longueur d'une chaîne de caractères (sans compter le caractère \0).

NB : le type size_t est définit dans stdlib.h et il est utilisé pour contenir une taille d'un objet (un vecteur, ...). Ce type garantit de pouvoir stocker un nombre suffisamment grand pour donner la taille du plus grand objet possible (différent, notamment, en fonction du système 32 bits ou 64 bits).



char* strcpy(char* destination, const char* source);

La fonction strcpy permet de copier une chaîne dans une autre.



char* strcat(char* chaine1, const char* chaine2);

La fonction strcat ajoute chaine2 à la suite de chaine1.



int strcmp(const char* chaine1, const char* chaine2);

La fonction strcmp compare les chaines de caractères chaine1 et chaine2. Elle renverra :

  • 0 si les chaînes sont identiques
  • une valeur positive si la première est alphabétiquement après la seconde (dans l'ordre définit par le jeu de caractère du compilateur)
  • une valeur négative si la première est alphabétiquement avant la seconde (dans l'ordre définit par le jeu de caractère du compilateur)



char* strchr(const char* chaine, int caractereARechercher);

La fonction strchr renvoie un pointeur vers la première occurence du caractère à rechercher qu'elle a trouvé, c'est-à-dire qu'elle renvoie l'adresse de ce caractère dans la mémoire. Elle renvoie NULL si elle n'a rien trouvé.



char* strstr(const char* chaine, const char* chaineARechercher);

La fonction strstr recherche la première occurrence d'une chaîne dans une autre chaîne.

Elle renvoie un pointeur, sur la première occurrence, quand elle a trouvé ce qu'elle cherchait. Elle renvoie NULL si elle n'a rien trouvé.



Quizz

Afin de tester votre compréhension de la matière, complèter ce questionnaire

Create your playground on Tech.io
This playground was created on Tech.io, our hands-on, knowledge-sharing platform for developers.
Go to tech.io