Linux系统下关于函数itoa()

2024-11-05 07:05:52
推荐回答(3个)
回答1:

#include

int atoi(const char *nptr);
long atol(const char *nptr);
long long atoll(const char *nptr);
long long atoq(const char *nptr);

linux下面没对应的好像,我man 没有查到.

给你直接找到一个实现,你放到自己代码里面就可以了

void itoa ( unsigned long val, char *buf, unsigned radix )
{
char *p; /* pointer to traverse string */
char *firstdig; /* pointer to first digit */
char temp; /* temp char */
unsigned digval; /* value of digit */

p = buf;
firstdig = p; /* save pointer to first digit */

do {
digval = (unsigned) (val % radix);
val /= radix; /* get next digit */

/* convert to ascii and store */
if (digval > 9)
*p++ = (char ) (digval - 10 + 'a '); /* a letter */
else
*p++ = (char ) (digval + '0 '); /* a digit */
} while (val > 0);

/* We now have the digit of the number in the buffer, but in reverse
order. Thus we reverse them now. */

*p-- = '\0 '; /* terminate string; p points to last digit */

do {
temp = *p;
*p = *firstdig;
*firstdig = temp; /* swap *p and *firstdig */
--p;
++firstdig; /* advance to next two digits */
} while (firstdig < p); /* repeat until halfway */
}

回答2:

附加 gcc 参数 -lxxxx 方式调用提供 itoa 函数接口的库。
不过你需要确定这个xxxx 应该是哪个才行。

你现在提示是 undefined reference 而不是提示函数未定义。所以应该代码没问题,是编译环境的函数库调用有问题。
你怎么装的开发环境?不会是装了头文件没装对应 so 吧?

回答3:

你那里没有itoa这个函数,用sprintf吧。
itoa不是c标准库的,有的编译环境有,有的则没有。
请查看你那儿的环境,是否需要包含什么头文件。