プロが教える店舗&オフィスのセキュリティ対策術

皆様いつもお世話になってマス(^^;
今回はint型の整数をchar型に(右詰で)入れる方法について

int counter = 100;
char input_kaisuu[10];

counter++;
↑今カウンターは101です。
これを「input_kaisuu」に右詰で設定したいのです。
"0000000101"←結果としてこんなかんじに。


-------------------------------------------------
ちなみにこんなことをやってみました。
sprintf(input_kaisuu, "%d", counter);

このやり方だと左詰で"1010000000"というようになってしまい、
全然違う数になってしまいました。(^^;

他にいい方法があれば教えてください!

A 回答 (4件)

%d を %09d にすると、お望みのものが出せます。


10進数で、9桁で表示する。表示する数字が9桁以下のときは先頭に0を表示する。
といった意味です。

10桁入れたいときは、char input_kaisuu[11] としてくださいね。
#文字列の終わりを表す文字も入れなきゃいけないので

この回答への補足

なるほど!
では、「10進数で、10桁で表示する。表示する数字が10桁以下のときは先頭に0を表示する。」
としたい時は、%010d とすれば良いのですか?

補足日時:2001/10/24 12:12
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
今まで出力用書式フラグの事を知らずにいました。

結果
char input_kaisuu[11]として、
%010dとすることで、解決できました。

お礼日時:2001/10/24 13:37

「回答」はcherry moonさんとnaturalさんにおまかせして、質問の文章の中に、恐らく


techtakさんが誤解されていると思われる個所がありますので、注意を喚起しておきます。

> sprintf(input_kaisuu, "%d", counter);
> このやり方だと左詰で"1010000000"というようになってしまい

とはならないはずです。(ライブラリがバグっていない限り)
この場合、配列の1番目から3番目(添字の0~2)に"101"が入り、4番目に'\0'が入ります。
'0'と'\0'は同じではありません。後者はゼロですが、前者は48という値(16進数で30)
で'0'という文字を表します。また、配列の5番目から最後までに入る値は定義されていません。
親切な実装ならゼロを入れてくれるかもしれませんが、一般的には、前に使った時のゴミが
入っている場合が多いです。今回は、多分、最初なのでゼロ('0'ではなく'\0')が入って
いたのだと思います。
    • good
    • 0
この回答へのお礼

ご指摘の通りです。
16進で確認したところ101の後ろにはNULL文字が入っていました。

不適切な質問で正確な回答は返ってきませんよね。
次回からは問題を正確に把握してから質問したいとおもいます。
ありがとうございました。

お礼日時:2001/10/24 14:07

ありゃ、回答がダブってしまいました。


回答欄を開いたときは0件だったんですが…。(^_^;
お詫びに補足を。

sprintf(input_kaisuu, "10%d", counter);

とすると、0埋め無しで右詰になりますよ。(^_^)
(勿論この場合も'\0'分の領域は用意して下さいね)
    • good
    • 0
この回答へのお礼

補足ありがとうございます。(^^;

お礼日時:2001/10/24 13:48

sprintf(input_kaisuu, "010%d", counter);



では如何でしょうか。
但しinput_kaisuuは'\0'分も含めて11以上の配列にして下さいね。(^_^)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!