Académique Documents
Professionnel Documents
Culture Documents
SM-SMI3 1
1) Tableaux de caractères(chaînes de caractères)
Soit le tableau suivant :
char nom[10];
nom[0] désigne le premier caractère…
Ce genre de variable s'appelle variable chaîne de caractères
Un tableau de caractères se termine par le caractère '\0'.
Il désigne la fin de la chaîne.
SM-SMI3 2
2) Lecture et affichage des chaînes de caractères
gets(ch) lit une chaîne et l'affecte à ch.
puts(ch) affiche la chaîne ch.
scanf("%s",ch) lit une chaîne et l'affecte à ch.
printf("%s",ch) affiche la chaîne ch.
SM-SMI3 3
Exemple
#include <stdio.h>
main()
{
char nom[10], prenom[10];
printf("donner le nom");
gets(nom);
printf("donner le prenom");
gets(prenom);
printf("vous avez saisi %s %s",nom, prenom);
}
SM-SMI3 4
3- Les chaînes constantes littérales
Les constantes littérales de chaînes de
caractères sont délimitées par des quôtes ""
Exemple
"salam"
SM-SMI3 5
Les éléments d'une chaîne
Chaque élément d'une chaîne est un caractère
(i.e. écrit entre apostrophes)
char x[10]="salam";
x[0] contient le caractère 's',
x[1] contient le caractère 'a',
…
x[5] contient le caractère '\0', caractère de fin de
chaîne.
SM-SMI3
6
4- Chaînes et affectation
Exemple
char x[10]; //déclaration de la variable chaîne x.
SM-SMI3
Initialisation des chaînes
-Initialisation globale
Exemple
char x[]="salam";
-Initialisation caractère par caractère
Exemple
char x[]={'s','a','l','a','m','\0'};
SM-SMI3 9
Ch 5
Traitement de chaînes de caractères
SM-SMI3 10
Présentation
SM-SMI3 11
Utilisation de strlen
#include<stdio.h>
#include<string.h>
main()
{ char ch1[100]="salam";
printf("%d",strlen(ch1));
}
SM-SMI3 12
Utilisation de strcmp
strcmp(ch1,ch2) retourne l'une des valeurs suivantes
0 si ch1 =ch2
-1 si ch1 < ch2
1 si ch1 > ch2
#include<stdio.h>
#include<string.h>
main()
{char ch1[100]="salam";
char ch2[20]="salam";
if(strcmp(ch1,ch2)<0)
printf("%s est inf %s",ch1,ch2);
else
if (strcmp(ch1,ch2)>0)
printf("%s est sup %s",ch1,ch2);
else
printf("les chaînes sont égales");
}
SM-SMI3 13
Utilisation de strcmp(suite)
strcmp(ch1,ch2) retourne l'une des valeurs suivantes
0 ch1 =ch2
-1 ch1 < ch2
1 ch1 > ch2
#include<stdio.h>
#include<string.h>
main()
{char ch1[100]="salam";
char ch2[20]="salam1";
if(strcmp(ch1,ch2)<0)
printf("%s est inf %s",ch1,ch2);
else
if (strcmp(ch1,ch2)>0)
printf("%s est sup %s",ch1,ch2);
else
printf("les chaînes sont égales");
}
SM-SMI3 14
Utilisation de strcmp(suite)
strcmp(ch1,ch2) retourne l'une des valeurs suivantes
0 ch1 =ch2
-1 ch1 < ch2
1 ch1 > ch2
#include<stdio.h>
#include<string.h>
main()
{char ch1[100]="salam1";
char ch2[20]="salam";
if(strcmp(ch1,ch2)<0)
printf("%s est inf %s",ch1,ch2);
else
if (strcmp(ch1,ch2)>0)
printf("%s est sup %s",ch1,ch2);
else
printf("les chaînes sont égales");
}
SM-SMI3 15
Remarque
strcmp prend en considération la casse.
A est différent de a
On peut utiliser
stricmp
pour négliger la casse.
SM-SMI3 16
Utilisation de strncmp
strncmp(ch1,ch2,n) compare les n premiers
caractères de ch1 et ch2
Exemple
strncmp("salam","salut",3) 0
Remarque
on peut aussi utiliser
strnicmp("Salam","salut",3)0
SM-SMI3 17
Utilisation de strcpy
strcpy(ch1,ch2) copie ch2 dans ch1
#include<stdio.h>
#include<string.h>
main()
{char ch1[100]="salam ";
char ch2[20]="tout le monde";
strcpy(ch1,ch2);
printf("%s",ch1);
}
SM-SMI3 18
Utilisation de strncpy
strncpy(ch1,ch2) copie n caractères de ch2 dans ch1
#include<stdio.h>
#include<string.h>
main()
{char ch1[20]="salam ";
char ch2[20]="tout le monde";
strncpy(ch1,ch2,5);
puts(ch1);
}
SM-SMI3 19
Utilisation de strrev
strrev(ch) inverse les caractères de ch
#include<stdio.h>
#include<string.h>
main()
{char ch[100]="salam ";
printf("%s", strrev(ch));
}
SM-SMI3 20
Utilisation de strcat
strcat(ch1,ch2) ajoute ch2 à ch1
#include<stdio.h>
#include<string.h>
main()
{char ch1[100]="salam ";
char ch2[20]="tout le monde";
strcat(ch1,ch2);
printf("%s",ch1);
}
SM-SMI3 21
Utilisation de strncat
strncat(ch1,ch2,n) ajoute n caractères de ch2 à ch1
#include<stdio.h>
#include<string.h>
main()
{char ch1[100]="salam ";
char ch2[20]="tout le monde";
strncat(ch1,ch2,4);
printf("%s",ch1);
}
SM-SMI3 22
Changement de casse
strlwr(ch) convertit ch en minuscule.
strupr(ch) convertit ch en majuscule.
Exemple
printf(strlwr("Salam")); salam
printf(strupr("Salam")); SALAM
SM-SMI3 23
Recherche d'un caractère dans une chaîne
char *pointeur=strchr(ch, car)
recherche le caractère car dans la chaîne ch.
#include<stdio.h>
#include<string.h>
main()
{char ch[100]="salam ";
char *ptr;
ptr=strchr(ch,'a');
printf("%s",ptr); alam
}
SM-SMI3 24
char *pointeur=strrchr(ch, car)
recherche le caractère car dans la chaîne ch à partir
de la fin.
#include<stdio.h>
#include<string.h>
main()
{char ch[100]="salam ";
char *ptr;
ptr=strrchr(ch,'a');
printf("%s",ptr); am
}
SM-SMI3 25
Recherche d'une sous-chaîne dans une chaîne
char *pointeur=strstr(ch, sous-chaîne)
recherche la sous-chaîne sous-chaîne dans la chaîne
ch.
#include<stdio.h>
#include<string.h>
main()
{char ch[100]="salam ";
char *ptr;
ptr=strstr(ch,"ala");
printf("%s",ptr); alam
}
26
SM-SMI3
Recherche d'un caractère d'une chaîne dans une
autre
char *pointeur=strpbrk(ch1, ch2)
recherche un caractère de ch2 dans ch1.
#include<stdio.h>
#include<string.h>
main()
{char ch[100]="salam ";
printf(strpbrk("salam","ra")); alam
}
SM-SMI3 27