É itoa () disponível em stdlib.h no Gcc = 4.1?

1

essa é a minha pergunta. Eu tenho o Gcc 4.4.1 e essa função não está presente, eu tinha instalado as versões 4.3 e 4.5 com o mesmo resultado: - /

Eu sei que esta função não é o padrão C-ANSI, mas eu não escrevi o código e preciso compilá-lo na minha distro. Um amigo meu tinha a mesma versão do compilador no Fedora, e o Gcc compilava sem problemas (usando stdio.h e stdlib.h).

Então, se alguém puder me dizer se a função está / não está disponível no meu compilador, ficarei agradecido.

Saudações.

btw: esta minha versão do gcc:

:~$ gcc -v
Using built-in specs.
Target: i686-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.4.4-14ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
Thread model: posix
gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5
    
por Rcart 17.12.2010 / 05:20

2 respostas

3

Ele não parece estar definido em 4.4.4, mas se você não se preocupa com radixes além de 10

char *itoa(long i, char* s, int dummy_radix) {
    sprintf(s, "%ld", i);
    return s;
}

É uma substituição rápida e suja (e testada).

    
por msw 17.12.2010 / 06:50
0
 void itoa(int n, char s[])
 {
 int i, sign;

 if ((sign = n) < 0)  /* записываем знак */
     n = -n;          /* делаем n положительным числом */
 i = 0;
 do {       /* генерируем цифры в обратном порядке */
     s[i++] = n % 10 + '0';   /* берем следующую цифру */
 } while ((n /= 10) > 0);     /* удаляем */
 if (sign < 0)
     s[i++] = '-';
 s[i] = '
#include <string.h>

/* reverse:  переворачиваем строку s на месте */
void reverse(char s[])
{
 int i, j;
 char c;

 for (i = 0, j = strlen(s)-1; i<j; i++, j--) {
     c = s[i];
     s[i] = s[j];
     s[j] = c;
 }
}
'; reverse(s); }

E se você precisar da função inversa:

 void itoa(int n, char s[])
 {
 int i, sign;

 if ((sign = n) < 0)  /* записываем знак */
     n = -n;          /* делаем n положительным числом */
 i = 0;
 do {       /* генерируем цифры в обратном порядке */
     s[i++] = n % 10 + '0';   /* берем следующую цифру */
 } while ((n /= 10) > 0);     /* удаляем */
 if (sign < 0)
     s[i++] = '-';
 s[i] = '
#include <string.h>

/* reverse:  переворачиваем строку s на месте */
void reverse(char s[])
{
 int i, j;
 char c;

 for (i = 0, j = strlen(s)-1; i<j; i++, j--) {
     c = s[i];
     s[i] = s[j];
     s[j] = c;
 }
}
'; reverse(s); }

Eu tenho essa implementação da Wikipédia russa.

    
por ByMsx 27.12.2013 / 09:18