GNU/Linux >> Linux の 問題 >  >> Linux

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

編集:申し訳ありませんが、このマシンは明らかに非標準であり、さまざまな非標準の 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

これがお役に立てば幸いです!


itoa 標準の C 関数ではありません。独自に実装できます。 Kernighan の初版に登場 そしてリッチー C プログラミング言語 C プログラミング言語 (「K&R2」) の第 2 版には、次の itoa の実装が含まれています。 、64 ページ。この本では、最も負の数を正しく処理しないという事実を含め、この実装に関するいくつかの問題が指摘されています。

 /* itoa:  convert n to characters in s */
 void itoa(int n, char s[])
 {
     int i, sign;

     if ((sign = n) < 0)  /* record sign */
         n = -n;          /* make n positive */
     i = 0;
     do {       /* generate digits in reverse order */
         s[i++] = n % 10 + '0';   /* get next digit */
     } while ((n /= 10) > 0);     /* delete it */
     if (sign < 0)
         s[i++] = '-';
     s[i] = '\0';
     reverse(s);
}  

関数 reverse 上記で使用されているものは、2 ページ前に実装されています:

 #include <string.h>

 /* reverse:  reverse string s in place */
 void reverse(char s[])
 {
     int i, j;
     char c;

     for (i = 0, j = strlen(s)-1; i<j; i++, j--) {
         c = s[i];
         s[i] = s[j];
         s[j] = c;
     }
}  

Linux
  1. bluetooth/bluetooth.h は Linux のどこにありますか?

  2. Linux サブシステムのファイルシステムは Windows 10 のどこにありますか?

  3. フォーク爆弾の fork() はどこですか :(){ :|:&};:?

  1. Linuxlsコマンドをマスターする

  2. Linux での locate コマンド

  3. ifconfig (Linux の場合) の非推奨宣言はどこにありますか?

  1. Linux の <conio.h> ヘッダー ファイルはどこにありますか? <conio.h> が見つからないのはなぜですか?

  2. Linux で PATH_MAX はどこで定義されていますか?

  3. Linux カーネル ソース ツリーのバージョンはどこにありますか?