© Éditions Eyrolles
159
chapitre n° 8
Les chaînes de caractères
atol ( chaîne )
(stdlib.h)
fournit un résultat de type long.
atof ( chaîne )
(stdlib.h)
fournit un résultat de type double.
Notez que ces fonctions effectuent le même travail que sscanf appliquée à une seule variable,
avec le code de format approprié. Par exemple (si n est de type int et adr de type char *) :
n = atoi (adr) ;
fait la même chose que :
sscanf (adr, "%d", &n) ;
9.2 Conversion de valeurs numériques en chaîne
La norme ne prévoit pas de fonctions de conversion d’une valeur numérique en chaîne, c’està-dire de fonctions jouant le rôle symétrique des fonctions atoi, atol, atof et atod. En
revanche, elle prévoit une fonction sprintf, symétrique de sscanf. Elle permet de convertir en chaîne une succession de valeurs numériques, en y incorporant, le cas échéant, d’autres
caractères. Par exemple, si n, de type int, contient 15 et si p, de type float, contient
785.35 et si tab est un tableau de caractères de taille suffisante, l’instruction suivante :
sprintf (tab, "%d articles coutent %f8.2 F", n, p) ;
placera dans tab, la chaîne suivante (elle sera bien terminée par un caractère \0) :
15 articles coutent
785.35 F
10 Quelques précautions à prendre avec les chaînes
Dans ce chapitre, nous avons examiné bon nombre des conséquences de la manière artificielle
dont le langage C gère les chaînes. Cependant, par souci de clarté, nous nous sommes limité
aux situations les plus courantes. Voici ici quelques compléments d’information concernant
des situations moins usitées mais dont la méconnaissance peut nuire à la bonne mise au point
des programmes.
10.1 Une chaîne possède une vraie fin, mais pas de vrai début
Comme nous l’avons vu, il existe effectivement une convention de représentation de la fin
d’une chaîne ; en revanche, rien de comparable n’est prévu pour son début. En fait, toute
adresse de type char * peut toujours faire office d’adresse de début de chaîne.
Delannoy Livre.book Page 159 Mercredi, 6. mai 2009 4:26 16
Précédent

- 172/281

Suivant