Conversion de type en C...aidez moi!!!

boco -  
 johnjohn -
Bonjour!
j'ai besoin de convertir une variable de type entier en un pointeur sur un char.
par exemple:
int a = 2;
et bin j'ai besoin de
char *v = "2";
y aurait-il une fonction similaire a atoi ou autre?
je cherche un peu partout et je ne trouve pas...
Merci d'avance pour votre precieuse reponse!

2 réponses

vincent viroleau
 
en gros tu cherce un itoa ...
alors plusieurs solutions, si t'es sur que ton int a n'a qu'un seul chiffre, tu peu tres simplement faire v[0] = a + '0'
sinon ben tu applique a peu pres le meme principe mais avec des modulo et des division au bon endroit.

exemple :

si a = 126

i = 2;
while (a != 0)
{
v[i] = (a % 10) + '0';
--i;
a /= 10;
}

v[2] = '6'
v[1] = '2'
v[0] = '1'
a = 0 donc on stop
tu oublie pas le \0 a la fin de ta chaine de caracter et voila !
0
johnjohn
 
c'est pas mal, t'es alle a bonne école.
par contre ce qui pourrait être intéressant c'est de calculer la taille
du pointeur avant d'assigner les caractères pour malloquer à la bonne taille.
en fait :
si a = 126

i = 2; //a calculer avec un boucle div 10, donne le nb de caracteres.
do {
v[i--] = (a % 10) + '0';
}
while (a/=10)
Pour la portabilite, je voudrai comprendre ce qui ne vas pas?
Contrairement au fonction du genre printf etc...
0
Bob
 
Pas standard, attention à la portabilité ...
Ce que j'aurais écrit:

#include <stdio.h>
#include <stdlib.h>

signed int main()
{
signed int integer; // declaration de l'entier
signed char *char_pointer; // pointeur sur un caractere
integer = 485984121; // affectation de l'entier
char_pointer = calloc(1689, sizeof(signed char)); // allocation de 1689 caracteres
sprintf(char_pointer, "%i", integer); // passe l'entier dans une chaine de caracteres
printf("%s\n", char_pointer); // affiche notre chaine de caracteres
free(char_pointer); // libere le pointeur
system("pause"); // une petite pause pour voir le resultat dans la console ;-)
return EXIT_SUCCESS; // annonce la fin du programme :'-(
}
0