ошибка: `itoa` не был объявлен в этой области - PullRequest
21 голосов
/ 24 июня 2011

У меня есть пример файла c с именем itoa.cpp, как показано ниже:

#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;
}

Когда я компилирую приведенный выше код с помощью следующей команды:

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

Что не так в этом коде? Как от этого избавиться?

Ответы [ 3 ]

24 голосов
/ 24 июня 2011

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;
}
5 голосов
/ 24 июня 2011

Если вас интересуют только базы 10, 8 или 16. Вы можете использовать sprintf

sprintf(buf,"%d",i);
4 голосов
/ 30 августа 2012

Загляните в stdlib.h.Может быть, _itoa вместо itoa был определен там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...