172 votes

Où se trouve la fonction itoa dans Linux ?

itoa() est une fonction très pratique pour convertir un nombre en chaîne de caractères. Linux ne semble pas avoir itoa() existe-t-il une fonction équivalente ou dois-je utiliser la fonction sprintf(str, "%d", num) ?

4 votes

Toute raison de ne pas utiliser sprintf(str, "%d", num) ? est-il beaucoup plus lent que itoa ?

5 votes

@javapowered, pour commencer, itoa permet une conversion arbitraire des bases, printf les spécificateurs ne le font pas.

0 votes

@javapowered sprintf() n'est pas sûr du signal

1voto

Zakhar Points 31

Le remplacement par snprintf n'est PAS complet !

Il ne couvre que les bases : 2, 8, 10, 16, alors que l'itoa fonctionne pour les bases comprises entre 2 et 36.

Comme je cherchais un remplacement pour la base 32, je suppose que je vais devoir coder le mien !

0voto

Paul Nathan Points 22910

Écrivez le vôtre ; c'est non standard.

0voto

m_pGladiator Points 4145

J'ai utilisé _itoa(...) sur RedHat 6 et le compilateur GCC. Cela fonctionne.

0voto

Jeyamaran Points 76

L'itoa n'est pas un standard c et c++. Mais nous n'utilisons que quelques compilateurs qui ne supportent que l'itoa. Il vaut donc mieux opter pour sprintf ou snprintf.

-6voto

Vous pouvez utiliser ce programme à la place de sprintf.

void itochar(int x, char *buffer, int radix);

int main()
{
    char buffer[10];
    itochar(725, buffer, 10);
    printf ("\n %s \n", buffer);
    return 0;
}

void itochar(int x, char *buffer, int radix)
{
    int i = 0 , n,s;
    n = s;
    while (n > 0)
    {
        s = n%radix;
        n = n/radix;
        buffer[i++] = '0' + s;
    }
    buffer[i] = '\0';
    strrev(buffer);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X