Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1712 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] Convertir un int en char*

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Convertir un int en char*

n°1033283
deather2
Posté le 02-04-2005 à 21:27:05  profilanswer
 

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
mood
Publicité
Posté le 02-04-2005 à 21:27:05  profilanswer
 

n°1033288
Taz
bisounours-codeur
Posté le 02-04-2005 à 21:36:34  profilanswer
 

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
n°1033294
deather2
Posté le 02-04-2005 à 21:43:25  profilanswer
 

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

n°1033298
Taz
bisounours-codeur
Posté le 02-04-2005 à 21:45:45  profilanswer
 

regarde aussi la fonction div

n°1033303
deather2
Posté le 02-04-2005 à 22:02:49  profilanswer
 

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
n°1033311
Pillow
'cos the trees won't talk
Posté le 02-04-2005 à 22:12:01  profilanswer
 

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

n°1033313
Taz
bisounours-codeur
Posté le 02-04-2005 à 22:13:12  profilanswer
 

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.

n°1033314
deather2
Posté le 02-04-2005 à 22:13:23  profilanswer
 

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
n°1033317
deather2
Posté le 02-04-2005 à 22:15:16  profilanswer
 

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
n°1033319
Taz
bisounours-codeur
Posté le 02-04-2005 à 22:16:02  profilanswer
 

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

mood
Publicité
Posté le 02-04-2005 à 22:16:02  profilanswer
 

n°1033322
deather2
Posté le 02-04-2005 à 22:18:25  profilanswer
 

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]

n°1033332
Taz
bisounours-codeur
Posté le 02-04-2005 à 22:29:44  profilanswer
 

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

n°1033337
deather2
Posté le 02-04-2005 à 22:37:04  profilanswer
 

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
n°1033340
KangOl
Profil : pointeur
Posté le 02-04-2005 à 22:38:34  profilanswer
 

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


---------------
Nos estans firs di nosse pitite patreye...
n°1033350
Taz
bisounours-codeur
Posté le 02-04-2005 à 22:49:47  profilanswer
 

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

n°1033383
Emmanuel D​elahaye
C is a sharp tool
Posté le 03-04-2005 à 00:40:08  profilanswer
 

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/
n°1033446
deather2
Posté le 03-04-2005 à 10:08:42  profilanswer
 

À 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! :)

n°1033456
Emmanuel D​elahaye
C is a sharp tool
Posté le 03-04-2005 à 10:37:56  profilanswer
 

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/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] Convertir un int en char*

 

Sujets relatifs
Convertir une database Delphiconvertir en maj avec la fonction toupper
convertir un string en bitmacro pour convertir des $ en euros
[access] Ds une requete, convertir un champ texte en dateconvertir en hexa
Convertir un string en format dateConvertir un prog C++ Unix en Prog Visuql C++ sous Windows
[C/C++] convertir fichier audioConvertir retour à la ligne unix/linux en retour à la ligne VB6
Plus de sujets relatifs à : [C] Convertir un int en char*


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR