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

最佳答案

编辑:对不起,我应该记得这台机器绝对是非标准的,出于学术目的已经插入了各种非标准的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(),因为从技术上讲它不是标准的一部分。有关更多信息,请参见here。请注意,您必须

#include <stdlib.h>


当然,您已经知道了这一点,因为您想在Linux上使用itoa()后,大概想在其他平台上使用它了,但是...(从上面的链接中窃取的)代码如下所示:



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



希望这可以帮助!

关于c - Linux中的itoa函数在哪里?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22060091/

10-13 05:45