文字の表示について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ポム

文字の表示について

#1

投稿記事 by ポム » 9年前

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にしたいのです。

こんなのとできますか?

ISLe
記事: 2648
登録日時: 10年前
連絡を取る:

Re: 文字の表示について

#2

投稿記事 by ISLe » 9年前

コード:

#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;
}
これでどうでしょう。

アバター
パコネコ
記事: 139
登録日時: 10年前
住所: 大阪

Re: 文字の表示について

#3

投稿記事 by パコネコ » 9年前

intに6ケタの数なんて入ったっけ?っていう疑問はさておき、
いっそ%ldでいいのでは?
0は表示されないのならですが・・・
桁数を調べて0をその数描写ならできますが・・・桁数の数が同じなら0は描写されないと思います。

=======
intは最大0xffffだと思っていたのですが・・・

コード:

int main(void){
	printf("%d",0xffff);
	return 0;
}
↑により
65535
になりました。
通常のintだったらこうなると思っていたのですが・・・勘違いならすいませんでした。
====
うん。
間違えてた。
short型で考えてました。
しかも符号なしで計算してるし・・・0xffffffff/2ですね.
大変失礼しました。
最後に編集したユーザー パコネコ on 2010年12月24日(金) 17:33 [ 編集 2 回目 ]
ニャン!!\(゜ロ\)(/ロ゜)/

ポム

Re: 文字の表示について

#4

投稿記事 by ポム » 9年前

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なんてあったんですね・・・
初めて知りました。
ありがとうございます。

アバター
みけCAT
記事: 6312
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: 文字の表示について

#5

投稿記事 by みけCAT » 9年前

パコネコ さんが書きました:intに6ケタの数なんて入ったっけ?っていう疑問はさておき
32ビット整数型なら10進数6桁の数は入るはずです。
もしかして、あなたがお使いのコンパイラは「LSI C-86 試食版」ですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

“C言語何でも質問掲示板” へ戻る