sprintf numeros manejo letras funcion entero convertir cast cadenas cadena c string integer type-conversion

numeros - manejo de cadenas en c++



Cómo convertir un entero a una cadena en C? (3)

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

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

Esta pregunta ya tiene una respuesta aquí:

Intenté este ejemplo:

/* itoa example */ #include <stdio.h> #include <stdlib.h> 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)


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.


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 compilador 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 compiladores de 64 bits, necesita aumentar el tamaño de la matriz: al menos 21 caracteres para los tipos de 64 bits.