初日 最新 目次 MAIL HOME


*-- To Tell The Truth --*
Cruz
MAIL
HOME

My追加

2001年07月27日(金)
基礎レベル

VC++でもなんでもない、フツーのC言語の話。

可変フォーマット出力
あんまりこんなことをしたいと考えたことが無かったから、
今まで知らずに生きてきた。
まぁ、その程度のレベルの話。

プリンターへの印刷処理を作っていたところ、
印刷データのフォーマットを整えねば・・・と思い、
あれこれ考えてみた。

出力データの縦のラインをそろえるためには、
指定文字数出力を行う%(文字数)sとかをやればいいのだが、
指定文字数がもしかしたら変わる場合・・・変わったらソースから検索して
修正するのはマヌケである。
こんなことを今さら知ったと言う方がマヌケかも?

・・・で、調査の結果(?)を文字数の変わりに入れ、
出力データ指定部分で文字数の入った変数を与えればいいことがわかった。

#define NAME_DATA   20
#define USERDATE_DATA 20

 sprintf(cpOutStr, "%-*s %*s",
   NAME_DATA, cpCardName,
   USERDATE_DATA, cpUseTime);

 TextOut(printdlg.hDC, X, Y, cpOutStr, strlen(cpOutStr));

#define定義しちゃっているから、完全なる可変ではないのだけどね。
ちなみに%-*s-は、左寄せってこと。

++++++++++++++

今日は、会社で創立記念式典だかなんだかがある。
よって、皆さん出席するために早く帰ることになる。
私は欠席。
お家へ帰らせて〜。

ちょっと気に入った2chのスレ
どこでも一緒なんだなぁ。