C言語関係掲示板

過去ログ

No.57. カンマ区切りの数字


thkと申します。よろしくお願いします。

1234567890 を 1,234,567,890 とする何かよい方法は
ないでしょうか?


こんにちは、ともじです。
ちょっと、ネット環境になかったので返信遅くなりました。

> 1234567890 を 1,234,567,890 とする何かよい方法はないでしょうか?

まず、1234567890の文字列の長さを調べます。
次に、カンマを付けた場合に何文字になるか算出します。
元の文字列の長さをi1、カンマをつけた場合をi2とすると、
i2 = i1 + (i1-1)/3; で求められますよね。

あとは、文字列の最後から、 str2[i2--] = str1[i1--];
順に先頭に向かって、3文字ごとにカンマをつけながら文字をコピーしていけば
いいですよね。

では、頑張ってください。


thkです。

ともじさんありがとうございます。

>ちょっと、ネット環境になかったので返信遅くなりました。
お盆ですもんね。

>まず、1234567890の文字列の長さを調べます。
>次に、カンマを付けた場合に何文字になるか算出します。
>元の文字列の長さをi1、カンマをつけた場合をi2とすると、
>i2 = i1 + (i1-1)/3; で求められますよね。
>
>あとは、文字列の最後から、 str2[i2--] = str1[i1--];
>順に先頭に向かって、3文字ごとにカンマをつけながら文字をコピーしていけば
>いいですよね。
>
>では、頑張ってください。

なるほど、わかりました。やってみます。
今後ともよろしくお願いします。

戻る


「初心者のためのポイント学習C言語」 Last modified:2001.10.7
Copyright(c) 2000-2002 TOMOJI All Rights Reserved