printfなどで0001と表示するさいに
printf("%04d",1);
と書くわけですが、
この%04dのところを自動で変更するようにはできないのでしょうか?
たとえば、
int start = 0;
int end;
scanf("%d",&end);
while(start <= end)
{
printf("%03d",start);
start++;
}
このようなコードだったとして、
今は%03dにしているので三桁ですが、
実際はendの桁数だけ表示桁数にしたいです。
なのでendに5555と入力されれば%04dに
endに845637と入力されれば%06dにしたいのです。
こんなのとできますか?
文字の表示について
Re: 文字の表示について
intに6ケタの数なんて入ったっけ?っていう疑問はさておき、
いっそ%ldでいいのでは?
0は表示されないのならですが・・・
桁数を調べて0をその数描写ならできますが・・・桁数の数が同じなら0は描写されないと思います。
=======
intは最大0xffffだと思っていたのですが・・・ ↑により
65535
になりました。
通常のintだったらこうなると思っていたのですが・・・勘違いならすいませんでした。
====
うん。
間違えてた。
short型で考えてました。
しかも符号なしで計算してるし・・・0xffffffff/2ですね.
大変失礼しました。
いっそ%ldでいいのでは?
0は表示されないのならですが・・・
桁数を調べて0をその数描写ならできますが・・・桁数の数が同じなら0は描写されないと思います。
=======
intは最大0xffffだと思っていたのですが・・・ ↑により
65535
になりました。
通常のintだったらこうなると思っていたのですが・・・勘違いならすいませんでした。
====
うん。
間違えてた。
short型で考えてました。
しかも符号なしで計算してるし・・・0xffffffff/2ですね.
大変失礼しました。
最後に編集したユーザー パコネコ on 2010年12月24日(金) 17:33 [ 編集 2 回目 ]
ニャン!!\(゜ロ\)(/ロ゜)/
Re: 文字の表示について
ありがとうございます。
無事に完成しました。
%0*dなんてあったんですね・・・
初めて知りました。
ありがとうございます。
Re: 文字の表示について
32ビット整数型なら10進数6桁の数は入るはずです。パコネコ さんが書きました:intに6ケタの数なんて入ったっけ?っていう疑問はさておき
もしかして、あなたがお使いのコンパイラは「LSI C-86 試食版」ですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)