Linuxのitoa関数はどこにありますか? 質問する

Linuxのitoa関数はどこにありますか? 質問する

itoa()は、数値を文字列に変換する非常に便利な関数です。 Linux には がないようですがitoa()、同等の関数があるのでしょうか、それとも を使用する必要がありますかsprintf(str, "%d", num)?

ベストアンサー1

libc編集: 申し訳ありませんが、このマシンは学術目的でさまざまな非標準実装が組み込まれているため、明らかに非標準であることを覚えておくべきでした;-)

itoa()確かに非標準ですが、何人かの親切なコメント投稿者が述べているように、sprintf(target_string,"%d",source_int)または を使用するのが最善です (バッファ オーバーフローの心配がないので、さらに良い方法です) snprintf(target_string, size_of_target_string_in_bytes, "%d", source_int)。 ほど簡潔でもクールでもないことは承知していますitoa()が、少なくとも Write Once, Run Everywhere (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

おすすめ記事