Vous êtes sur la page 1sur 21

Les chaines de caractres

en langage C
Pr. Othmane EL MESLOUHI

1
Code ASCII
Code ASCII tendu
Les constantes de type caractre

En C une constante de type caractre est un nombre entier crit sous la forme dun
caractre entre apostrophes, comme a.

La valeur dune constante de type caractre est gale la valeur du caractre daprs
le jeu de caractre de la machine (ex. ASCII).

Exemples:
a vaut 97
A vaut 65
B vaut 66
0 vaut 48
Les constantes de type chane

Un constante de type chane est une squence de caractres, ventuellement vide,


place entre guillemets.

Exemple:
"Je suis une chaine "

"Bonjour groupe!\n"

Note: Les guillemets ne font pas partie de la chane.

"\"Je suis one chaine\""


Les variables de type caractre

Pour declarer une variable de type char, on procde de la faon


suivante:

char c1; /* c1 est une variable de type caractre */


char c2 = a; /* c2 est une variable de type caractre
initialise a */
Les entres et sorties

#include <stdio.h> /* fichier den-tte pour le C */


main(){
char c;
c = getchar();
putchar(c);
}
Les entres et sorties

Le fichier den-tte stdio.h:

Contient la dclaration des fonctions standards dentre et de sortie


(en C)

int getchar(void)
Retourne le caractre suivant (converti en un int).
retourne EOF si la fin du fichier est atteinte ou si une erreur
survient.

int putchar(char c)
crit le caractre c.
Retourne le caractre crit ou bien EOF en cas derreur.
Les fonctions de ctype.h

Le fichier den-tte ctype.h contient la dclaration de fonctions destines tester


les caractres:

isdigit(char c) retourne 1 si c est un chiffre, 0 sinon


is lower(char c) retourne 1 si c est une lettre minuscule, 0 sinon
isupper(char c) retourne 1 si c est une lettre majuscule, 0 sinon
isalpha(char c) retourne 1 si c est une lettre, o sinon
isspace(char c) retourne 1 si c est un character d'espacement, 0 sinon
et plusieurs autres.
Chanes de caractres

# include < stdio.h>


in t m ain ()
{
ch ar ch ain e[80];

printf("entrer une chaine :");


gets(chaine);
printf("le contenu de la chane est : % s\n", chaine);
retu rn 0;
}
Dclaration et mmorisation

Dclaration en C :
char NomVariable [Longueur];
Exemple :
char nom[20];
Remarque :
La reprsentation interne d une chane de caractres est
termine par le symbole \0 NUL
Donc pour un texte de N caractres, nous devons
prvoir N+1 octets
Initialisation des chanes

char txt[8]= {'b','o','n','j','o','u','r','\0'};

b o n j o u r '\0'
Donc il faut toujours dclarer N+1 lments a
la longueur de chane dsires : bonjour est
constitue de 7 caractres donc on doit dclarer
8 cases :
char txt[8]= bonjour ; ok
char txt[7]= bonjour ; Erreur
char txt[10]= bonjour ; ok
Manipulation des chanes

puts (chaine) : crit une chane de caractres dsignes par


(chaine) sur stdout et provoque un retour a la ligne; en pratique :
puts(chaine); est quivalent printf("%s \n",txt);
gets (chaine) : lit une chane de caractres de stdin et la copie a l
adresse indique par le retour a la ligne est remplace par le
symbole de fin de chaine \0
gets(chaine); est quivalent scanf("%s", &txt);
Exemple de programmes
# include < stdio.h>
# include< string.h>
in t m ain ()
{
ch ar txt[16]= "b on jou r ";
ch ar txt2[8];
gets(txt2);
strcat(txt,txt2);
// Le Rsultat est :
puts (txt);
return 0;
}
Fonctions de <string>

- strlen(<s>) :
fournit la longueur de la chane sans compter le '\0' final
- strcpy(<s>, <t>) : copie <t> vers <s>
-strcat(<s>, <t>) :ajoute <t> la fin de <s>
-strcmp(<s>, <t>): compare <s> et <t> lexicographiquement.
-strncpy(<s>, <t>, <n>)
copie au plus <n> caractres de <t> vers <s>
-strncat(<s>, <t>, <n>)
ajoute au plus <n> caractres de <t> la fin de <s>
Les fonctions de <stdlib>

La bibliothque <stdlib> contient des dclarations de fonctions pour la conversion de


nombres en chanes de caractres et vice-versa

Conversion de chanes de caractres en nombres


atoi(<s>)
retourne la valeur numrique reprsente par <s> comme int
atol(<s>)
retourne la valeur numrique reprsente par <s> comme long
atof(<s>)
retourne la valeur numrique reprsente par <s> comme double (!)
Les fonctions de <stdlib>

Conversion de chanes de caractres en nombres


Rgles gnrales pour la conversion:
Les espaces au dbut d'une chane sont ignors
Il n'y a pas de contrle du domaine de la cible
La conversion s'arrte au premier caractre non convertible
Pour une chane non convertible, les fonctions retournent zro
Les fonctions de <ctype>

Les fonctions de <ctype> servent classifier et convertir des


caractres :
toupper(<c>)
retourne <c> converti en majuscule si <c> est une minuscule
tolower(<c>)
retourne <c> converti minuscule en si <c> est une majuscule
Exercice 1

crire un programme qui demande l'introduction du


nom et du prnom de l'utilisateur et qui affiche alors
la longueur totale du nom.
Employer la fonction strlen.
Exercice 2

crire un programme qui lit deux chanes de


caractres CH1 et CH2, les compare
lexicographiquement
Exercice 3

crire un programme qui lit deux chanes de caractres CH1 et


CH2 et qui copie la premire moiti de CH1 et la premire
moiti de CH2 dans une troisime chane CH3. Afficher le
rsultat.

a) Utiliser les fonctions spciales de <string>.

b) Utiliser uniquement les fonctions gets et puts.