Exercice langage C : Les fonctions de stdlib

Exercice 1

Soient les instructions:

char STR[200];
puts("Entrez un nombre :");
gets(STR);
printf("Entrée = %s \n", STR);
printf("integer = %d \n", atoi(STR));
printf("long = %ld \n", atol(STR));
printf("double = %f \n", atof(STR));
Quelles sont les valeurs affichées si on entre les chaînes de caractères suivantes: a) 123
b) -123
c) - 123
d) 123.45
e) 12E3
f) 1234f5
g) -1234567
h) 123e-02
i) -0,1234

Nombre --> Chaîne

Le standard ANSI-C ne contient pas de fonctions pour convertir des nombres en chaînes de caractères. Si on se limite aux systèmes fonctionnant sous DOS, on peut quand même utiliser les fonctions itoa, ltoa et ultoa qui convertissent des entiers en chaînes de caractères.

Conversion de nombres en chaînes de caractères

itoa (, , )

ltoa (, , )

ultoa (, , )

Chacune de ces trois procédures convertit son premier argument en une chaîne de caractères qui sera ensuite attribuée à . La conversion se fait dans la base .

est un nombre du type int
est un nombre du type long
est un nombre du type unsigned long
est une chaîne de caractères
longueur maximale de la chaîne: 17 resp. 33 byte
est la base pour la conversion (2 ... 36)

Exercice 2

Ecrivez un petit programme utilisant la fonction ltoa qui sert à contrôler les résultats de l'exercice 3.3.


Entrée:

integerlongdouble
a)123123123123.000000
b) -123-123-123-123.000000
c) - 12300-0.000000
d)123.45123123123.45
e)12E3121212000.000000
f)1234f5123412341234.000000
g)-1234567dépassement-1234567-1234567.000000
h)123e-021231231.230000
i)-0.123400-0.123400


#include
#include
main()
{
long N;
char STR[200];
do
{
puts("Entrez un nombre :");
scanf("%ld",&N);
printf("Entrée = %ld\n", N);
printf("base 2 = %s\n", ltoa(N, STR, 2));
printf("base 8 = %s\n", ltoa(N, STR, 8));
printf("base 16 = %s\n", ltoa(N, STR, 16));
}
while(N);
return 0;
}

Article publié le 05 Février 2011 Mise à jour le Mardi, 08 Novembre 2022 10:02 par Salim KHALIL