错误:`itoa`未在此范围内声明

vch*_*tta 22 c

我有一个名为itoa.cpp的示例c文件,如下所示:

#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);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我使用以下命令编译上面的代码时:

gcc itoa.cpp -o itoa

我收到此错误:

[root@inhyuvelite1 u02]# gcc itoa.cpp -o itoa
itoa.cpp: In function "int main()":
itoa.cpp:10: error: "itoa" was not declared in this scope

这段代码有什么问题?如何摆脱这个?

Mik*_*ola 24

itoa不是ansi C标准,你应该避免它.如果你真的想要使用它,这里有一些自己动手的实现:

http://www.strudel.org.uk/itoa/

如果您需要内存字符串格式化,更好的选择是使用snprintf.从你的例子开始:

#include <stdio.h>
#include <stdlib.h>

int main ()
{
  int i;
  char buffer [33];
  printf ("Enter a number: ");
  scanf ("%d",&i);
  snprintf(buffer, sizeof(buffer), "%d", i);
  printf ("decimal: %s\n",buffer);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)


Jex*_*xcy 6

如果您只对10,8或16号基础感兴趣,可以使用 sprintf

sprintf(buf,"%d",i);
Run Code Online (Sandbox Code Playgroud)

  • 你应该推荐snprintf而不是sprintf. (5认同)