Cómo convertir un entero a una cadena en C?

Intenté este ejemplo:

/* itoa example */ #include  #include  int main () { int i; char buffer [33]; printf ("Enter a number: "); scanf ("%d",&i); itoa (i,buffer,10); printf ("decimal: %s\n",buffer); itoa (i,buffer,16); printf ("hexadecimal: %s\n",buffer); itoa (i,buffer,2); printf ("binary: %s\n",buffer); return 0; } 

pero el ejemplo no funciona (dice que la función itoa no existe).

Use sprintf() :

 int someInt = 368; char str[12]; sprintf(str, "%d", someInt); 

Todos los números que son representables por int encajarán en una matriz de 12 caracteres sin desbordamiento, a menos que el comstackdor esté utilizando de alguna manera más de 32 bits para int . Al usar números con mayor tamaño de bits, por ejemplo, long con la mayoría de los comstackdores de 64 bits, necesita boost el tamaño de la matriz: al menos 21 caracteres para los tipos de 64 bits.

Hacer tu propia itoa también es fácil, prueba esto:

 char* itoa(int i, char b[]){ char const digit[] = "0123456789"; char* p = b; if(i<0){ *p++ = '-'; i *= -1; } int shifter = i; do{ //Move to where representation ends ++p; shifter = shifter/10; }while(shifter); *p = '\0'; do{ //Move back, inserting digits as u go *--p = digit[i%10]; i = i/10; }while(i); return b; } 

o use la función sprintf() estándar.

Eso es porque itoa no es una función estándar. Pruebe snprintf lugar.

 char str[LEN]; snprintf(str, LEN, "%d", 42);