SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 1
Chapitre 10:
Les chaines de
caractères
M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 2
Chapitre 10: Les chaînes de caractères
Introduction
▪ En langage C, il n’existe pas de véritable type chaîne, dans
la mesure où l’on ne peut pas y déclarer des variables
d’un tel type. En revanche, il existe une convention de
représentation des chaînes. Celle-ci est utilisée à la fois :
✓par le compilateur pour représenter les chaînes constantes
(notées entre doubles quotes) ;
✓par un certain nombre de fonctions qui permettent de
réaliser :
▪ les lectures ou écritures de chaînes ;
▪ les traitements classiques tels que concaténation
recopie, comparaison, extraction de sous-chaîne,
conversions…
Introduction
M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 3
Chapitre 10: Les chaînes de caractères
La convention adoptée
▪ En C, une chaîne de caractères est représentée par une
suite d’octets correspondant à chacun de ses caractères
(plus précisément à chacun de leurs codes), le tout étant
terminé par un octet supplémentaire de code nul. Cela
signifie que, d’une manière générale, une chaîne de n
caractères occupe en mémoire un emplacement de n+1
octets.
▪ Cas des chaînes constantes : Une notation de la forme:
"bonjour"
est traduite par le compilateur en un pointeur de type
char*
sur la zone mémoire correspondante.
Représentation des chaînes
M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 4
Chapitre 10: Les chaînes de caractères
Déclaration des chaînes
▪ Deux manières de les définir :
✓ par un tableau : char s[ ] = "abcd";
✓ par un pointeur : char* p = "abcd";
Dans les deux cas le 0 final est rajouté
automatiquement
Représentation des chaînes
a b c d 0
p ou s
▪ Attention : sizeof(s) = 5 : nombre de caractères + 0 final
M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 5
Chapitre 10: Les chaînes de caractères
int longueur(const char* s)
{
char* adr = s;
while (*adr) adr++;
return adr- s; // nombre de char entre s et adr
}
Représentation des chaînes
Exemple : Calcul de la longueur
M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 6
Chapitre 10: Les chaînes de caractères
Initialisation de chaînes de caractères
▪ C autorise à initialiser un tableau de caractères à l’aide
d’une chaîne constante. Ainsi, vous pourrez écrire :
char ch[20] = "bonjour" ;
ce qui sera équivalent à
char ch[20] = { 'b','o','n','j','o','u','r','0' };
▪ De plus nous pouvons écrire
char message[]= "bonjour " ;
Représentation des chaînes
M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 7
Chapitre 10: Les chaînes de caractères
▪ 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 (une seule à la fois).
#include <stdio.h>
main()
{ char nom[20], prenom[20], ville[25] ;
printf ("quelle est votre ville : ") ;
gets (ville) ;
printf ("donnez votre nom et votre prénom : ") ;
scanf ("%s %s", nom, prenom) ;
printf ("bonjour cher %s %s qui habitez à ", prenom, nom) ;
puts (ville) ;
}
Lire et écrire une chaîne
Exemple
M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 8
Chapitre 10: Les chaînes de caractères
▪ la délimitation de la chaîne lue ne s’effectue pas de la
même façon avec scanf et gets. Plus précisément :
✓avec le code %s de scanf, on utilise les délimiteurs
habituels (l’espace ou la fin de ligne). Cela interdit donc
la lecture d’une chaîne contenant des espaces. De plus,
le caractère délimiteur n’est pas consommé : il reste
disponible pour une prochaine lecture ;
✓avec gets, seule la fin de ligne sert de délimiteur. De
plus, contrairement à ce qui se produit avec scanf, ce
caractère est effectivement consommé : il ne risque pas
d’être pris en compte lors d’une nouvelle lecture.
▪ La fonction puts réalise un changement de ligne à la fin de
l’affichage de la chaîne, ce qui n’est pas le cas de printf avec
le code de format %s.
Lire et écrire une chaine
M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 9
Chapitre 10: Les chaînes de caractères
La fonction strlen
▪ La fonction strlen fournit en résultat la longueur d’une
chaîne dont on lui a transmis l’adresse en argument:
▪ Syntaxe: int strlen(char *s1); (string.h)
▪ Le caractère de code nul n’étant pas pris en compte
dans la longueur.
▪ Par exemple, l’expression :
strlen ("bonjour"); vaudra 7 ;
▪ de même, avec :
char * adr = "salut" ;
l’expression :
strlen (adr); vaudra 5
Les fonctions portant sur les chaînes
M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 10
Chapitre 10: Les chaînes de caractères
Les fonctions de concaténation: strcat
▪ L’appel de strcat se présente ainsi:
strcat (but, source ) (string.h)
Cette fonction recopie la seconde chaîne (source) à la
suite de la première (but), après en avoir effacé le
caractère de fin.
▪ Il est nécessaire que l’emplacement réservé pour la
première chaîne soit suffisant pour y recevoir la partie à
lui concaténer.
Les fonctions portant sur les chaînes
Avant: bonjour
Apres : bonjour monsieur
Exemple
M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 11
Chapitre 10: Les chaînes de caractères
Les fonctions de concaténation : strncat
▪ Syntaxe:
strncat (but, source, lgmax) (string.h) travaille de façon
semblable à strcat en offrant en outre un contrôle sur le
nombre de caractères qui seront concaténés à la chaîne
d’arrivée (but).
➢Exemple:
Les fonctions portant sur les chaînes
Avant: bonjour
Apres : bonjour monsi
Exemple
M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 12
Chapitre 10: Les chaînes de caractères
Exemple
Les fonctions de comparaison : strcmp
▪ Syntaxe:
int strcmp(char *s1, char *s2);
▪ Compare lexico graphiquement les chaîne s1 et s2, et
retourne une valeur:
✓ =0 si s1 et s2 sont identique.
✓ <0 si s1 précède s2.
✓ >0 si s1 suit s2.
❖strcmp ("bonjour", "monsieur") est négatif
❖strcmp ("paris2", "paris10") est positif
Les fonctions portant sur les chaînes
M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 13
Chapitre 10: Les chaînes de caractères
Exemple
Les fonctions de comparaison: strcnmp
▪ Syntaxe:
strncmp (chaîne1, chaîne2, lgmax );
travaille comme strcmp mais elle limite la
comparaison au nombre maximal de caractères
indiqués par l’entier lgmax.
❖ strncmp("bonjour", "bon", 4); est positif
❖strncmp("bonjour", "bon", 2); vaut zéro.
Les fonctions portant sur les chaînes
M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 14
Chapitre 10: Les chaînes de caractères
Les fonctions de comparaison: stricmp et strnicmp
▪ Enfin, deux fonctions :
✓ stricmp ( chaîne1, chaîne2 ) ( string.h)
✓ strnicmp ( chaîne1, chaîne2, lgmax ) ( string.h)
travaillent respectivement comme strcmp et strncmp,
mais sans tenir compte de la différence entre
majuscules et minuscules (pour les seuls caractères
alphabétiques).
Les fonctions portant sur les chaînes
M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 15
Chapitre 10: Les chaînes de caractères
Les fonctions de copie : strcpy et strncpy
▪ La fonction :
strcpy ( but, source ) (string.h)
recopie la chaîne située à l’adresse source dans
l’emplacement d’adresse but. Cette fonction fournit
comme résultat l’adresse de la chaîne but.
▪ La fonction :
strncpy ( but, source, lgmax ) (string.h)
procède de manière analogue à strcpy, en limitant la
recopie au nombre de caractères précisés par
l’expression entière lgmax.
Les fonctions portant sur les chaînes
M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 16
Chapitre 10: Les chaînes de caractères
Exemple
Les fonctions de copie: strcpy ey strncpy
:
Les fonctions portant sur les chaînes
donnez un mot : bon
bon
_______
donnez un mot : bonjour
bonjouxxxxxxxxxxxxx
M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 17
Chapitre 10: Les chaînes de caractères
Les fonctions de recherche
▪ strchr ( chaîne, caractère ) (string.h)
recherche, dans chaîne, la première position où apparaît le
caractère mentionné.
▪ strrchr ( chaîne, caractère ) (string.h)
réalise le même traitement que strchr, mais en explorant la
chaîne concernée à partir de la fin.
▪ strstr ( chaîne, sous-chaîne ) (string.h)
recherche, dans chaîne, la première occurrence complète
de la sous-chaîne mentionnée.
N.B: Ces fonctions fournissent comme résultat un pointeur de
type char * sur l’information cherchée en cas de succès, et le
pointeur NULL dans le cas contraire.
Les fonctions portant sur les chaînes
M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 18
Chapitre 10: Les chaînes de caractères
Exemple
Les fonctions de recherche
int main(int argc, char *argv[])
{
char chaine[] = "Texte de test " ; char *suiteChaine=NULL;
suiteChaine = strchr(chaine, 'd');
if (suiteChaine != NULL)
{ printf("Voici la fin de la chaine a partir du premier d : %s",
suiteChaine);}
return 0;
}
Les fonctions portant sur les chaînes
Voici la fin de la chaine a partir du premier d : de test
M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 19
Chapitre 10: Les chaînes de caractères
Conversion de chaines en valeur numérique
▪ Il existe trois fonctions permettant de convertir une chaîne
de caractères en une valeur numérique de type int, long ou
double :
✓atoi ( chaîne ) (stdlib.h) :
fournit un résultat de type int.
✓atol ( chaîne ) (stdlib.h) :
fournit un résultat de type long.
✓atof ( chaîne ) (stdlib.h)
fournit un résultat de type double.
Les fonctions de conversion de chaines
M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 20
Chapitre 10: Les chaînes de caractères
Conversion de valeur numérique en chaines
▪ Les fonctions
✓char *itoa(int n, char *s, int b);
✓char *ltoa(long n, char *s, int b);
✓char *ultoa(unisigned n, char *s, int b);
Convertissent l’entier n, représenté en base de
numération b, dans la chaîne s.
Les fonctions de conversion de chaines

Weitere ähnliche Inhalte

Ähnlich wie Chapitre 10 - Les chaines de characteres.pdf

Chapitre 3 - Généralités sur le langage C.pdf
Chapitre 3 - Généralités sur le langage C.pdfChapitre 3 - Généralités sur le langage C.pdf
Chapitre 3 - Généralités sur le langage C.pdfShiniGami0o0
 
Développement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulièresDéveloppement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulièresECAM Brussels Engineering School
 
Chapitre5 les chaînes de caractères - Copy.pptx
Chapitre5 les chaînes de caractères - Copy.pptxChapitre5 les chaînes de caractères - Copy.pptx
Chapitre5 les chaînes de caractères - Copy.pptxFerdawsBNasrBSalah
 
Cours programmation en langage C.pdf
Cours  programmation  en  langage  C.pdfCours  programmation  en  langage  C.pdf
Cours programmation en langage C.pdfkhalidmoussaid4
 
Chapitre 8 - Les tableaux et les pointeurs.pdf
Chapitre 8 - Les tableaux et les pointeurs.pdfChapitre 8 - Les tableaux et les pointeurs.pdf
Chapitre 8 - Les tableaux et les pointeurs.pdfShiniGami0o0
 
Rappel_Structure programmatio. 2 smi.ppté
Rappel_Structure programmatio.  2 smi.pptéRappel_Structure programmatio.  2 smi.ppté
Rappel_Structure programmatio. 2 smi.pptéJihadKhalili
 
En route vers Java 21 - Javaday Paris 2023
En route vers Java 21 - Javaday Paris 2023En route vers Java 21 - Javaday Paris 2023
En route vers Java 21 - Javaday Paris 2023Jean-Michel Doudoux
 
Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfFadouaBouafifSamoud
 
Algorithme & structures de données Chap III
Algorithme & structures de données Chap IIIAlgorithme & structures de données Chap III
Algorithme & structures de données Chap IIIInes Ouaz
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniShellmates
 
Les nouveautés de Java 21 - Rencontres dev Toulon octobre 2023.pdf
Les nouveautés de Java 21 - Rencontres dev Toulon octobre 2023.pdfLes nouveautés de Java 21 - Rencontres dev Toulon octobre 2023.pdf
Les nouveautés de Java 21 - Rencontres dev Toulon octobre 2023.pdfJean-Michel Doudoux
 
Les nouveautés de Java 21 - Devoxx MA 2023.pdf
Les nouveautés de Java 21 - Devoxx MA 2023.pdfLes nouveautés de Java 21 - Devoxx MA 2023.pdf
Les nouveautés de Java 21 - Devoxx MA 2023.pdfJean-Michel Doudoux
 
nombres aléatoires en langage C
nombres aléatoires en langage Cnombres aléatoires en langage C
nombres aléatoires en langage Cmohamednacim
 
Chapitre 1 - Algorithmique.pdf
Chapitre 1 - Algorithmique.pdfChapitre 1 - Algorithmique.pdf
Chapitre 1 - Algorithmique.pdfShiniGami0o0
 

Ähnlich wie Chapitre 10 - Les chaines de characteres.pdf (20)

Chapitre 3 - Généralités sur le langage C.pdf
Chapitre 3 - Généralités sur le langage C.pdfChapitre 3 - Généralités sur le langage C.pdf
Chapitre 3 - Généralités sur le langage C.pdf
 
Développement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulièresDéveloppement informatique : Chaines de caractères et expressions regulières
Développement informatique : Chaines de caractères et expressions regulières
 
C5 types structures
C5 types structuresC5 types structures
C5 types structures
 
Chapitre5 les chaînes de caractères - Copy.pptx
Chapitre5 les chaînes de caractères - Copy.pptxChapitre5 les chaînes de caractères - Copy.pptx
Chapitre5 les chaînes de caractères - Copy.pptx
 
Pointeuren c
Pointeuren cPointeuren c
Pointeuren c
 
Cours programmation en langage C.pdf
Cours  programmation  en  langage  C.pdfCours  programmation  en  langage  C.pdf
Cours programmation en langage C.pdf
 
Chapitre 8 - Les tableaux et les pointeurs.pdf
Chapitre 8 - Les tableaux et les pointeurs.pdfChapitre 8 - Les tableaux et les pointeurs.pdf
Chapitre 8 - Les tableaux et les pointeurs.pdf
 
Rappel_Structure programmatio. 2 smi.ppté
Rappel_Structure programmatio.  2 smi.pptéRappel_Structure programmatio.  2 smi.ppté
Rappel_Structure programmatio. 2 smi.ppté
 
En route vers Java 21 - Javaday Paris 2023
En route vers Java 21 - Javaday Paris 2023En route vers Java 21 - Javaday Paris 2023
En route vers Java 21 - Javaday Paris 2023
 
Ch2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdfCh2-Notions de base & actions élémentaires.pdf
Ch2-Notions de base & actions élémentaires.pdf
 
Algorithme & structures de données Chap III
Algorithme & structures de données Chap IIIAlgorithme & structures de données Chap III
Algorithme & structures de données Chap III
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El Hassani
 
COURS_PYTHON_22.ppt
COURS_PYTHON_22.pptCOURS_PYTHON_22.ppt
COURS_PYTHON_22.ppt
 
Les nouveautés de Java 21 - Rencontres dev Toulon octobre 2023.pdf
Les nouveautés de Java 21 - Rencontres dev Toulon octobre 2023.pdfLes nouveautés de Java 21 - Rencontres dev Toulon octobre 2023.pdf
Les nouveautés de Java 21 - Rencontres dev Toulon octobre 2023.pdf
 
Les nouveautés de Java 21 - Devoxx MA 2023.pdf
Les nouveautés de Java 21 - Devoxx MA 2023.pdfLes nouveautés de Java 21 - Devoxx MA 2023.pdf
Les nouveautés de Java 21 - Devoxx MA 2023.pdf
 
nombres aléatoires en langage C
nombres aléatoires en langage Cnombres aléatoires en langage C
nombres aléatoires en langage C
 
Ch02
Ch02Ch02
Ch02
 
Initiation r
Initiation rInitiation r
Initiation r
 
Chapitre 1 - Algorithmique.pdf
Chapitre 1 - Algorithmique.pdfChapitre 1 - Algorithmique.pdf
Chapitre 1 - Algorithmique.pdf
 
Language-C.ppt
Language-C.pptLanguage-C.ppt
Language-C.ppt
 

Chapitre 10 - Les chaines de characteres.pdf

  • 1. M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 1 Chapitre 10: Les chaines de caractères
  • 2. M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 2 Chapitre 10: Les chaînes de caractères Introduction ▪ En langage C, il n’existe pas de véritable type chaîne, dans la mesure où l’on ne peut pas y déclarer des variables d’un tel type. En revanche, il existe une convention de représentation des chaînes. Celle-ci est utilisée à la fois : ✓par le compilateur pour représenter les chaînes constantes (notées entre doubles quotes) ; ✓par un certain nombre de fonctions qui permettent de réaliser : ▪ les lectures ou écritures de chaînes ; ▪ les traitements classiques tels que concaténation recopie, comparaison, extraction de sous-chaîne, conversions… Introduction
  • 3. M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 3 Chapitre 10: Les chaînes de caractères La convention adoptée ▪ En C, une chaîne de caractères est représentée par une suite d’octets correspondant à chacun de ses caractères (plus précisément à chacun de leurs codes), le tout étant terminé par un octet supplémentaire de code nul. Cela signifie que, d’une manière générale, une chaîne de n caractères occupe en mémoire un emplacement de n+1 octets. ▪ Cas des chaînes constantes : Une notation de la forme: "bonjour" est traduite par le compilateur en un pointeur de type char* sur la zone mémoire correspondante. Représentation des chaînes
  • 4. M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 4 Chapitre 10: Les chaînes de caractères Déclaration des chaînes ▪ Deux manières de les définir : ✓ par un tableau : char s[ ] = "abcd"; ✓ par un pointeur : char* p = "abcd"; Dans les deux cas le 0 final est rajouté automatiquement Représentation des chaînes a b c d 0 p ou s ▪ Attention : sizeof(s) = 5 : nombre de caractères + 0 final
  • 5. M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 5 Chapitre 10: Les chaînes de caractères int longueur(const char* s) { char* adr = s; while (*adr) adr++; return adr- s; // nombre de char entre s et adr } Représentation des chaînes Exemple : Calcul de la longueur
  • 6. M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 6 Chapitre 10: Les chaînes de caractères Initialisation de chaînes de caractères ▪ C autorise à initialiser un tableau de caractères à l’aide d’une chaîne constante. Ainsi, vous pourrez écrire : char ch[20] = "bonjour" ; ce qui sera équivalent à char ch[20] = { 'b','o','n','j','o','u','r','0' }; ▪ De plus nous pouvons écrire char message[]= "bonjour " ; Représentation des chaînes
  • 7. M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 7 Chapitre 10: Les chaînes de caractères ▪ 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 (une seule à la fois). #include <stdio.h> main() { char nom[20], prenom[20], ville[25] ; printf ("quelle est votre ville : ") ; gets (ville) ; printf ("donnez votre nom et votre prénom : ") ; scanf ("%s %s", nom, prenom) ; printf ("bonjour cher %s %s qui habitez à ", prenom, nom) ; puts (ville) ; } Lire et écrire une chaîne Exemple
  • 8. M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 8 Chapitre 10: Les chaînes de caractères ▪ la délimitation de la chaîne lue ne s’effectue pas de la même façon avec scanf et gets. Plus précisément : ✓avec le code %s de scanf, on utilise les délimiteurs habituels (l’espace ou la fin de ligne). Cela interdit donc la lecture d’une chaîne contenant des espaces. De plus, le caractère délimiteur n’est pas consommé : il reste disponible pour une prochaine lecture ; ✓avec gets, seule la fin de ligne sert de délimiteur. De plus, contrairement à ce qui se produit avec scanf, ce caractère est effectivement consommé : il ne risque pas d’être pris en compte lors d’une nouvelle lecture. ▪ La fonction puts réalise un changement de ligne à la fin de l’affichage de la chaîne, ce qui n’est pas le cas de printf avec le code de format %s. Lire et écrire une chaine
  • 9. M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 9 Chapitre 10: Les chaînes de caractères La fonction strlen ▪ La fonction strlen fournit en résultat la longueur d’une chaîne dont on lui a transmis l’adresse en argument: ▪ Syntaxe: int strlen(char *s1); (string.h) ▪ Le caractère de code nul n’étant pas pris en compte dans la longueur. ▪ Par exemple, l’expression : strlen ("bonjour"); vaudra 7 ; ▪ de même, avec : char * adr = "salut" ; l’expression : strlen (adr); vaudra 5 Les fonctions portant sur les chaînes
  • 10. M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 10 Chapitre 10: Les chaînes de caractères Les fonctions de concaténation: strcat ▪ L’appel de strcat se présente ainsi: strcat (but, source ) (string.h) Cette fonction recopie la seconde chaîne (source) à la suite de la première (but), après en avoir effacé le caractère de fin. ▪ Il est nécessaire que l’emplacement réservé pour la première chaîne soit suffisant pour y recevoir la partie à lui concaténer. Les fonctions portant sur les chaînes Avant: bonjour Apres : bonjour monsieur Exemple
  • 11. M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 11 Chapitre 10: Les chaînes de caractères Les fonctions de concaténation : strncat ▪ Syntaxe: strncat (but, source, lgmax) (string.h) travaille de façon semblable à strcat en offrant en outre un contrôle sur le nombre de caractères qui seront concaténés à la chaîne d’arrivée (but). ➢Exemple: Les fonctions portant sur les chaînes Avant: bonjour Apres : bonjour monsi Exemple
  • 12. M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 12 Chapitre 10: Les chaînes de caractères Exemple Les fonctions de comparaison : strcmp ▪ Syntaxe: int strcmp(char *s1, char *s2); ▪ Compare lexico graphiquement les chaîne s1 et s2, et retourne une valeur: ✓ =0 si s1 et s2 sont identique. ✓ <0 si s1 précède s2. ✓ >0 si s1 suit s2. ❖strcmp ("bonjour", "monsieur") est négatif ❖strcmp ("paris2", "paris10") est positif Les fonctions portant sur les chaînes
  • 13. M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 13 Chapitre 10: Les chaînes de caractères Exemple Les fonctions de comparaison: strcnmp ▪ Syntaxe: strncmp (chaîne1, chaîne2, lgmax ); travaille comme strcmp mais elle limite la comparaison au nombre maximal de caractères indiqués par l’entier lgmax. ❖ strncmp("bonjour", "bon", 4); est positif ❖strncmp("bonjour", "bon", 2); vaut zéro. Les fonctions portant sur les chaînes
  • 14. M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 14 Chapitre 10: Les chaînes de caractères Les fonctions de comparaison: stricmp et strnicmp ▪ Enfin, deux fonctions : ✓ stricmp ( chaîne1, chaîne2 ) ( string.h) ✓ strnicmp ( chaîne1, chaîne2, lgmax ) ( string.h) travaillent respectivement comme strcmp et strncmp, mais sans tenir compte de la différence entre majuscules et minuscules (pour les seuls caractères alphabétiques). Les fonctions portant sur les chaînes
  • 15. M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 15 Chapitre 10: Les chaînes de caractères Les fonctions de copie : strcpy et strncpy ▪ La fonction : strcpy ( but, source ) (string.h) recopie la chaîne située à l’adresse source dans l’emplacement d’adresse but. Cette fonction fournit comme résultat l’adresse de la chaîne but. ▪ La fonction : strncpy ( but, source, lgmax ) (string.h) procède de manière analogue à strcpy, en limitant la recopie au nombre de caractères précisés par l’expression entière lgmax. Les fonctions portant sur les chaînes
  • 16. M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 16 Chapitre 10: Les chaînes de caractères Exemple Les fonctions de copie: strcpy ey strncpy : Les fonctions portant sur les chaînes donnez un mot : bon bon _______ donnez un mot : bonjour bonjouxxxxxxxxxxxxx
  • 17. M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 17 Chapitre 10: Les chaînes de caractères Les fonctions de recherche ▪ strchr ( chaîne, caractère ) (string.h) recherche, dans chaîne, la première position où apparaît le caractère mentionné. ▪ strrchr ( chaîne, caractère ) (string.h) réalise le même traitement que strchr, mais en explorant la chaîne concernée à partir de la fin. ▪ strstr ( chaîne, sous-chaîne ) (string.h) recherche, dans chaîne, la première occurrence complète de la sous-chaîne mentionnée. N.B: Ces fonctions fournissent comme résultat un pointeur de type char * sur l’information cherchée en cas de succès, et le pointeur NULL dans le cas contraire. Les fonctions portant sur les chaînes
  • 18. M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 18 Chapitre 10: Les chaînes de caractères Exemple Les fonctions de recherche int main(int argc, char *argv[]) { char chaine[] = "Texte de test " ; char *suiteChaine=NULL; suiteChaine = strchr(chaine, 'd'); if (suiteChaine != NULL) { printf("Voici la fin de la chaine a partir du premier d : %s", suiteChaine);} return 0; } Les fonctions portant sur les chaînes Voici la fin de la chaine a partir du premier d : de test
  • 19. M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 19 Chapitre 10: Les chaînes de caractères Conversion de chaines en valeur numérique ▪ Il existe trois fonctions permettant de convertir une chaîne de caractères en une valeur numérique de type int, long ou double : ✓atoi ( chaîne ) (stdlib.h) : fournit un résultat de type int. ✓atol ( chaîne ) (stdlib.h) : fournit un résultat de type long. ✓atof ( chaîne ) (stdlib.h) fournit un résultat de type double. Les fonctions de conversion de chaines
  • 20. M. Tahrichi (DUT–ASR, Dept Info ) Algorithmique et programmation 2019-2020 p 20 Chapitre 10: Les chaînes de caractères Conversion de valeur numérique en chaines ▪ Les fonctions ✓char *itoa(int n, char *s, int b); ✓char *ltoa(long n, char *s, int b); ✓char *ultoa(unisigned n, char *s, int b); Convertissent l’entier n, représenté en base de numération b, dans la chaîne s. Les fonctions de conversion de chaines