ANSI C, número entero de cadena sin funciones variadic
Pregunta
Actualmente estoy trabajando con un PLC que es compatible con ANSI C, pero utiliza su propio sabor del compilador de GNU, que no compila las funciones variadic y cosas por el estilo itoa. Así que usando sprintf & co. no es una opción para la conversión de números enteros a cadenas. ¿Puede alguien me guía a un sitio donde aparece un robusto, sprintf- implementación libre de itoa o publicar un algoritmo adecuado aquí? Gracias de antemano.
Solución
Esto es de K & R:
void itoa(int n, char s[])
{
int i, sign;
if ((sign = n) < 0) /* record sign */
n = -n; /* make n positive */
i = 0;
do { /* generate digits in reverse order */
s[i++] = n % 10 + '0'; /* get next digit */
} while ((n /= 10) > 0); /* delete it */
if (sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
reverse()
sólo se invierte de una cadena.
Otros consejos
Sólo por el bien de la integridad y como referencia para otros que puedan tropezar con el tema, añadió enlace en la aplicación recursiva de itoa itoa recursiva que me gusta debido a su belleza simple, pero no se puede utilizar para mi sistema de destino.