我目前正在使用一种支持ANSI C的可编程逻辑控制器(PLC),但是它使用自己的GNU编译器版本,它不会编译任何可变参数函数和像itoa这样的函数。因此,使用sprintf等方法将整数转换为字符串不是一个选择。是否有人可以指导我去某个网站查找一个强大、无需sprintf的itoa实现或在这里发布一个合适的算法?谢谢!
这是来自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()
只是将字符串反转。
sprintf()
一样。 - Alok Singhalsprintf()
,而只应该使用snprintf()
的原因。 - R Samuel Klatchkosnprintf()
。但是如果确信目标缓冲区具有所需的大小,则sprintf()
也可以使用。请参见http://stackoverflow.com/questions/1996374/convert-integer-into-an-array/1996500#1996500作为例子。 - Alok Singhal