1. ホーム
  2. c

[解決済み] error: `itoa` is not declared in this scope

2022-02-01 09:57:34

質問

以下のような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;
}

上記のコードを以下のコマンドでコンパイルすると、以下のようになります。

gcc itoa.cpp -o itoa

このエラーが発生します。

[root@inhyuvelite1 u02]# gcc itoa.cpp -o itoa
itoa.cpp: 関数 "int main()" において。
itoa.cpp:10: error: "itoa" was not declared in this scope

このコードのどこがおかしいのでしょうか?これを取り除くにはどうしたらよいでしょうか?

どのように解決するのですか?

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