1. ホーム
  2. c

[解決済み] Linuxのitoa関数はどこにあるのですか?

2022-04-26 11:20:27

質問

itoa() は、数値を文字列に変換するのにとても便利な関数です。Linuxには itoa() を使用しなければならないのでしょうか? sprintf(str, "%d", num) ?

解決方法は?

EDIT: すみません、このマシンは明らかに非標準で、様々な非標準のプラグインを使用していることを思い出すべきでした。 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() 他のいくつかのプラットフォームと同様、技術的に標準の一部でないためです。 参照 こちら をご覧ください。 注意点としては

#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

お役に立てれば幸いです。