Cast int -> char [C]

Fermé
lagarkane - 5 mai 2010 à 16:18
 lagarkane - 5 mai 2010 à 17:06
Bonjour!
J'ai toujours utilisé bêtement la fonction printf en C, sans me demander comment elle fonctionne...
J'ai donc décidé d'essayer de l reprogrammer, avec mes connaissances, en n'utilisant qu'une seule fonction: write()...

Mais voilà, je tombes sur un os...

Pour écrire une chaine de caractères, pas de soucis, mais si maintenant j'ai un int, et que je veux l'afficher caractère par caractère à l'ecran, il faut, par exemple pour une variable

nombre = 5679
le découper en 5, 6, 7, 9.

pour cela, j'utilise simplement la division par la puissance de 10 voulue.
Mais lorsque j'essayes de stocker le nombre dans un char, les problèmes commencent.

J'ai pu constater que caster un float en int et inversement n'est pas compliqué (int j = nb_decimal;)

Mais lorsque je cast un int d'un seul caractère (int i = 1; par exemple) dans un char, la variable char reste vide.....

Quelqu'un saurait comment faire? Sachant que je ne veux pas utiliser d'autre fonction que write...

Où est le problème?
merci d'avance, si vous m'avez compris =)

A voir également:

3 réponses

debianhunter Messages postés 119 Date d'inscription mardi 22 décembre 2009 Statut Membre Dernière intervention 11 juillet 2010 24
5 mai 2010 à 16:46
Bonjour,

En ASCII, '0' = 48.
Je ferais donc quelque chose de ce gout-la:

   char car; // caractere
   unsigned short digit; // doit etre un entier non-signe

   ... 

   // iterate on number, digit after digit
   while( ... )
   {
      // recupereation du digit
      ...
      car = 48 + digit;
      // ecriture du nombre
      ..
   }


La gestion du signe, du 0 et eventuellement de l'overflow (digit doit etre compris entre 0 et 9) reste a ta charge ;o)

Bon courage
1
Ok, désolé, j'ai compris où était mon problème!
le problème n'est pas qu'il n'arrive pas a mettre mon int dans un char, mais le problème est qu'au lieu de prendre le symbole de mon int, par exemple '0' ou '6' , il prends le symbole réprésenté par le code ascii!
Par exemple pour 0, il va prendre '\0' !
et comme c'est une variable, jpeux aps mettre le nombre entre apostrohpes!!
Comment puis'je lui faire comprendre que je veux le symbole, et pas le code décimal du symbole ascii?
HELP!
0
merci pour la réponse, j n'y avais pas pensé, mais effectivement, il suffit de faire le code ascii de 0 et de rajouter le chiffre voulu pour afficher le bon symbole!
Merci encore =)
0