Convertir un nombre en chaîne de caractères et réciproquement

Problème

Vous voulez transformer un nombre (entier ou flottant) en chaîne de caractères pour l’afficher ou vous disposez d’une telle chaîne et avez besoin d’en récupérer la valeur numérique.

Solution

Utilisez une des fonctions strtol(), strtof() ou strtod() si vous avez une chaîne de caractères et que vous voulez obtenir le nombre qu’elle contient. Utilisez snprintf() pour transformer un nombre en chaîne de caractères.

Discussion

Transformer une chaîne de caractères en sa valeur, selon le type souhaité, est facile avec les fonctions strtol() pour en obtenir un entier, strtof() pour en obtenir un nombre à virgule flottant, et strtod() pour un nombre à virgule flottante double précision. Ces fonctions feront le maximum pour récupérer la valeur souhaitée et renverront zéro si elles échouent. Pour tester si une chaîne contient un nombre, il suffit donc d’effectuer le test suivant : (strtol(chaine, NULL,10) || (’\0’ == chaine[0])). Si strtol() renvoie zéro, testez si le nombre est zéro ou si la chaîne contient autre chose qu’un nombre qui ne peut être converti en nombre.

Si vous avez besoin d’une conversion en long long, utilisez strtoul(). Pour un long double, c’est strtold().

Ces fonctions présentent plusieurs intérêts. Le premier...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Concaténer deux chaînes de caractères
Suivant
Transformer une chaîne de caractères avec des retours chariot en un tableau de chaînes de caractères