- ベストアンサー
sprintfで0埋め表示
char型に入っている数字を規定桁数で0埋めしたいのですが...。 sprintf(char1, "%03s", char2); ↑このようにしているのですが、そうすると ・「1」→「1..」と左詰めで表示されます。 もうひとつ、DBでNUMBER(実数)型に入っている数値の整数部分だけを char型に格納したい(「123.45」→「123」のように)のですが、sprintfではできないのでしょうか? 初めてのC開発でまったくわかりません。 教えてください。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#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にキャストしたら、小数部分が捨てられます。
その他の回答 (2)
- foobar
- ベストアンサー率44% (1423/3185)
#1の補足 #2さんの回答に有るように、一旦整数に変換する方が良いとおもうけど sprintf(a,"%08.0f",number); みたいな感じでもいけるような。
- foobar
- ベストアンサー率44% (1423/3185)
後の方(実数->文字列)なら sprintf(char,"%.0f",number); でできそうに思います。
補足
すいません。説明不足でした。 こちらも規定桁数で0埋めしたいんです。(例)「1.5」→「001」) sprintf(char,"%3.0f",number); ↑このようにしてみたんですが、うまくいきませんでした。
お礼
教えていただいた通りに修正したところ、どちらも解決できました。 とても助かりました。どうもありがとうございました。