一尘不染

Linux中的itoa函数在哪里?

linux

itoa()是将数字转换为字符串的便捷工具。Linux似乎没有itoa(),是否有等效的功能或者我必须使用sprintf(str, "%d", num)


阅读 738

收藏
2020-06-02

共1个答案

一尘不染

编辑:对不起,我应该记得这台机器绝对是非标准的,libc出于学术目的已插入了各种非标准的实现;-)

由于itoa()确实不规范,如一些有用的评论者提到的,最好使用sprintf(target_string,"%d",source_int)或(更好的,因为它是从安全缓冲区溢出)snprintf(target_string, size_of_target_string_in_bytes, "%d", source_int)。我知道它不像它那么简洁或酷itoa(),但是至少您可以编写一次,到处运行(tm);-)

这是旧的(编辑过的)答案

您正确地说,默认值不像其他几个平台一样gcc libc包含itoa(),因为默认情况下它不是该标准的一部分。有关更多信息,请参见此处。请注意,您必须

#include <stdlib.h>

当然,你已经知道这一点,因为你想 使用 itoa()大概使用它在其他平台上后,在Linux上,但…代码(从上面的链接被盗)将如下所示:

/* 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;
}

输出:

Enter a number: 1750
decimal: 1750
hexadecimal: 6d6
binary: 11011010110

希望这可以帮助!

2020-06-02