|
> まじめに作るほうを教えてください。条件は他にはありません。よろしくお願いします。
その前に、「掲示板ご利用上の注意」にしたがって、まじめに投稿
してください。
題名が不適切なだけでなく、不要な全文引用のせいで、どこ
にあなたのコメントがあるのか非常に分かりにくくなっています。
さて、まじめに作るとこうでしょう。
char *itoa(int v, char *s)
{
char t[12];
int i = 0, j = 0;
unsigned int u = v;
if (v < 0) {
u = -v;
s[i++] = '-';
}
do {
t[j++] = u % 10 + '0';
u /= 10;
} while (u != 0);
do {
s[i++] = t[--j];
} while (j != 0);
s[i] = 0;
return s;
}
ふまじめに作るとこうなりました。
char *x(unsigned int u, char *s)
{
return (u > 10) && (s = x(u / 10, s)), *s++ = u % 10 + '0', s;
}
char *itoa(int v, char *s)
{
return (v < 0) ? (*s = '-', *x(-v, s+1) = 0) : (*x(v, s) = 0), s;
}
-2147483648 も正しく処理できます。
|