[C] Convertir un int en char*

Convertir un int en char* [C] - C - Programmation

Marsh Posté le 02-04-2005 à 21:27:05    

Bonjour,
Je dois convertir un int en char*, mais je ne sais pas du tout comment faire...
Je ne peut pas utiliser d'itoa() ou de printf(), juste mes mimines, mais j'vois carrément pas l'algo à faire :/
Qqun peut m'aider? :)
Merci !


Message édité par deather2 le 02-04-2005 à 21:27:14
Reply

Marsh Posté le 02-04-2005 à 21:27:05   

Reply

Marsh Posté le 02-04-2005 à 21:36:34    

snprintf
 
edit : oops
 
 
ben tu fais une succession de division par 10, et en fonction du reste, tu émets un caractère '0'..'9'


Message édité par Taz le 02-04-2005 à 21:37:20
Reply

Marsh Posté le 02-04-2005 à 21:43:25    

Merci, pas bête. Je vais essayer ça ;)

Reply

Marsh Posté le 02-04-2005 à 21:45:45    

regarde aussi la fonction div

Reply

Marsh Posté le 02-04-2005 à 22:02:49    

Code :
  1. case 'i':
  2.    i_int = va_arg(vargs, int);
  3.    /* Nombre négatif ? */
  4.    if(i_int < 0)
  5.        write(1, "-", 1);
  6.    while(i_int != 0)
  7.    {
  8.        i_modulo = i_int % 10;
  9.        i_int = i_int / 10;
  10.        i_modulo += 48;     /* Conversion int -> ASCII */
  11.        write(1, (char*)&i_modulo, 1);
  12.        printed_chars++;
  13.    } 
  14. break;


 
Ça semble correct ?
car pour 1234567890 il m'affiche 0987654321 :/


Message édité par deather2 le 02-04-2005 à 22:04:09
Reply

Marsh Posté le 02-04-2005 à 22:12:01    

Quel est le reste de 15 divisé par 10? 1 ou 5?

Reply

Marsh Posté le 02-04-2005 à 22:13:12    

pourquoi tu fais pas += '0' ?
 
 
write(1, (char*)&i_modulo, 1);
 
relis le man de write et dis moi pourquoi tu castes ?
 
et puis d'ailleurs i_module devrait être de type char, sinopn t'es foutu ...
 
c = i_modulo + '0'
 
ça affiche à l'envers ? normal.

Reply

Marsh Posté le 02-04-2005 à 22:13:23    

Ah wé merde le boolay :lol:
Désolé ;)
 
edit: merci taz pour les infos, et désolé j'me suis un peu emmelé pour l'affichage... je vais méditer là dessus :D


Message édité par deather2 le 02-04-2005 à 22:14:05
Reply

Marsh Posté le 02-04-2005 à 22:15:16    

Euh concernant write, il demande un const void* (va savoir pourquoi je l'ai casté en char*)
donc j'fais write(1, (const void*)&i_modulo, 1);, c'est bon là?


Message édité par deather2 le 02-04-2005 à 22:15:26
Reply

Marsh Posté le 02-04-2005 à 22:16:02    

pourquoi veux tu caster ?
 
as tu changé le type de i_modulo vers char ?

Reply

Marsh Posté le 02-04-2005 à 22:16:02   

Reply

Marsh Posté le 02-04-2005 à 22:18:25    

Oui, j'ai changé le type de i_modulo en char.
Pourquoi le caster? Ben j'ai un char et il me faut un const void* [:spamafote]

Reply

Marsh Posté le 02-04-2005 à 22:29:44    

et la maîtresse t'as pas dit que les conversions void* <-> T* sont implicites et légales ?

Reply

Marsh Posté le 02-04-2005 à 22:37:04    

J'en sais rien, n'empeche qu'à la base j'ai pas un pointeur donc nécessité de caster, et tant qu'à faire autant caster en ce qu'on me demande, c'est plus propre à lire.
 
edit: ah oui remarque si je passe que &modulo, ça marcherait.


Message édité par deather2 le 02-04-2005 à 22:37:29
Reply

Marsh Posté le 02-04-2005 à 22:38:34    

void ca veux dire "quelque chose" donc pas besoin de caster...


---------------
Nos estans firs di nosse pitite patreye...
Reply

Marsh Posté le 02-04-2005 à 22:49:47    

deather2 a écrit :

et tant qu'à faire autant caster en ce qu'on me demande, c'est plus propre à lire.

personne ne te demande de caster. Et au contraire c'est dégueux de caster quand y en a pas besoin, c'est source d'erreur et ça allourdie le code on l'obscurissant

Reply

Marsh Posté le 03-04-2005 à 00:40:08    

deather2 a écrit :

Je dois convertir un int en char*


C'est quoi un 'char *' ?
 
http://mapage.noos.fr/emdel/notes.htm#char_star
 
Sinon, tu cherches probablement sprintf() ou [C99] snprintf().
 
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 03-04-2005 à 10:08:42    

À la base j'ai un int genre 123456789.
Je dois arriver à obtenir une chaîne de caractère genre "123456789\0".
Quant à snprintf, j'ai dis dans mon premier post que je ne pouvais pas les utiliser, je dois le faire à la main ;)
 
Merci quand même! :)

Reply

Marsh Posté le 03-04-2005 à 10:37:56    

deather2 a écrit :

À la base j'ai un int genre 123456789.
Je dois arriver à obtenir une chaîne de caractère genre "123456789\0".


Ah, une chaine de caractères, ben fallait le dire...

Citation :

Quant à snprintf, j'ai dis dans mon premier post que je ne pouvais pas les utiliser, je dois le faire à la main ;)


<mauvaise foi=ON>
Tu avais parlé de printf() ...
<mauvaise foi=OFF>


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed