• ベストアンサー

sprintfで0埋め表示

char型に入っている数字を規定桁数で0埋めしたいのですが...。 sprintf(char1, "%03s", char2); ↑このようにしているのですが、そうすると ・「1」→「1..」と左詰めで表示されます。 もうひとつ、DBでNUMBER(実数)型に入っている数値の整数部分だけを char型に格納したい(「123.45」→「123」のように)のですが、sprintfではできないのでしょうか? 初めてのC開発でまったくわかりません。 教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

#include <stdio.h> #include <stdlib.h> int main(void){ char char1[80]; char char2[]="1"; double NUMBER=123.45; sprintf(char1,"%03s\n",char2);/* 文字列に対しては無効 */ printf(char1); sprintf(char1,"%03d,%d\n",atoi(char2),(int)NUMBER); printf(char1); return 0; } こんな感じかと、 文字列に対してはパティングとして0埋めは、無効だと思います。 サンプルでは、いったんatoiを使って数値に変換しています doubleをintにキャストしたら、小数部分が捨てられます。

sprit
質問者

お礼

教えていただいた通りに修正したところ、どちらも解決できました。 とても助かりました。どうもありがとうございました。

その他の回答 (2)

  • foobar
  • ベストアンサー率44% (1423/3185)
回答No.3

#1の補足 #2さんの回答に有るように、一旦整数に変換する方が良いとおもうけど sprintf(a,"%08.0f",number); みたいな感じでもいけるような。

  • foobar
  • ベストアンサー率44% (1423/3185)
回答No.1

後の方(実数->文字列)なら sprintf(char,"%.0f",number); でできそうに思います。

sprit
質問者

補足

すいません。説明不足でした。 こちらも規定桁数で0埋めしたいんです。(例)「1.5」→「001」) sprintf(char,"%3.0f",number); ↑このようにしてみたんですが、うまくいきませんでした。