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

  1. 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
    1. 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
  2. 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