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