ページ 1 / 1
文字の表示について
Posted: 2010年12月24日(金) 00:43
by ポム
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: 文字の表示について
Posted: 2010年12月24日(金) 01:06
by ISLe
コード:
#include <stdio.h>
int main(void)
{
int start = 0;
int end;
int tmp, c;
scanf("%d", &end);
tmp = end;
c = 0;
while (tmp > 0) {
tmp /= 10;
c ++;
}
while (start <= end) {
printf("%0*d\n", c, start);
start++;
}
return 0;
}
これでどうでしょう。
Re: 文字の表示について
Posted: 2010年12月24日(金) 01:07
by パコネコ
intに6ケタの数なんて入ったっけ?っていう疑問はさておき、
いっそ%ldでいいのでは?
0は表示されないのならですが・・・
桁数を調べて0をその数描写ならできますが・・・桁数の数が同じなら0は描写されないと思います。
=======
intは最大0xffffだと思っていたのですが・・・
コード:
int main(void){
printf("%d",0xffff);
return 0;
}
↑により
65535
になりました。
通常のintだったらこうなると思っていたのですが・・・勘違いならすいませんでした。
====
うん。
間違えてた。
short型で考えてました。
しかも符号なしで計算してるし・・・0xffffffff/2ですね.
大変失礼しました。
Re: 文字の表示について
Posted: 2010年12月24日(金) 01:26
by ポム
ISLe さんが書きました:コード:
#include <stdio.h>
int main(void)
{
int start = 0;
int end;
int tmp, c;
scanf("%d", &end);
tmp = end;
c = 0;
while (tmp > 0) {
tmp /= 10;
c ++;
}
while (start <= end) {
printf("%0*d\n", c, start);
start++;
}
return 0;
}
これでどうでしょう。
ありがとうございます。
無事に完成しました。
%0*dなんてあったんですね・・・
初めて知りました。
ありがとうございます。
Re: 文字の表示について
Posted: 2010年12月24日(金) 17:03
by みけCAT
パコネコ さんが書きました:intに6ケタの数なんて入ったっけ?っていう疑問はさておき
32ビット整数型なら10進数6桁の数は入るはずです。
もしかして、あなたがお使いのコンパイラは「LSI C-86 試食版」ですか?