Open Source Your Knowledge, Become a Contributor
Technology knowledge has to be shared and made accessible for free. Join the movement.
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