Les fonctions de string.h
Copier, assembler, comparer et rechercher dans des chaînes avec la bibliothèque standard.
Ce que tu vas apprendre
- Copier et assembler des chaînes avec
strcpyetstrcat - Comparer deux chaînes avec
strcmp - Rechercher un caractère ou un mot avec
strchretstrstr
Copier et assembler
On ne peut pas écrire a = b entre deux tableaux. strcpy(dest, src) copie src dans dest ; strcat(dest, src) ajoute src à la fin de dest.
C'est à toi de vérifier que dest est assez grand pour le résultat et son '\0'.
Comparer
strcmp(a, b) renvoie 0 si les chaînes sont identiques, un nombre négatif si a vient avant b dans l'ordre des codes, un nombre positif sinon. Pour des mots en minuscules, c'est l'ordre alphabétique.
Rechercher
strchr(s, c) cherche un caractère et strstr(s, motif) un morceau de texte. Elles renvoient un pointeur vers ce qui a été trouvé, ou NULL. La position s'obtient par une soustraction : p - s.
Exemples commentés
1.Ordre alphabétique
#include <stdio.h>
#include <string.h>
int main(void) {
char a[50], b[50];
scanf("%49s %49s", a, b);
int cmp = strcmp(a, b);
if (cmp == 0) {
printf("identiques\n");
} else if (cmp < 0) {
printf("%s avant %s\n", a, b);
} else {
printf("%s avant %s\n", b, a);
}
return 0;
}Entrée
pomme banane
Sortie
banane avant pomme
strcmp renvoie un nombre positif car « pomme » vient après « banane ».
2.Trouver un mot dans une phrase
#include <stdio.h>
#include <string.h>
int main(void) {
char texte[200];
if (fgets(texte, sizeof texte, stdin) == NULL) {
return 0;
}
char *p = strstr(texte, "chat");
if (p == NULL) {
printf("absent\n");
} else {
printf("position %d\n", (int) (p - texte)); // indice dans texte
}
return 0;
}Entrée
le chat dort
Sortie
position 3
« chat » commence à l'indice 3 (l, e, espace, puis c). Les pointeurs sont détaillés dans le module 8.
Chaque exemple est compilé et exécuté automatiquement pour garantir la sortie affichée.
Erreurs fréquentes
Copier avec =
À éviter
char copie[50]; copie = mot;
À préférer
char copie[50]; strcpy(copie, mot);
Un tableau ne peut pas être affecté : copie = mot ne compile pas.
Un tableau trop petit pour strcat
Pour coller deux mots de 49 lettres, il faut 49 + 49 + 1 = 99 cases. Sinon, strcat écrit en dehors du tableau.
Entraîne-toi
5 questions variées pour fixer la leçon : choix, résultat à prévoir, ligne à compléter, code à remettre dans l'ordre, erreur à trouver.
À toi de jouer !
8 exercices pour mettre cette leçon en pratique, du plus simple au plus avancé.